阅读 45

NestJS入门教程— 04.Controller/路由的创建

新建一个路由/Controller

比如要新建一个http://localhost:3000/jspang的页面,访问时直接返回Hello NestJS,这时候就可以在app.controller.ts文件里编写下面的代码。

import { Controller, Get } from '@nestjs/common'; import { AppService } from './app.service'; @Controller() export class AppController {   constructor(private readonly appService: AppService) {}   @Get()   getHello(): string {     return this.appService.getHello();   }  //---------添加部分-----------   @Get('JSpang')   getJSpang():string{     return 'Hello NestJS.'   }  //--------------------------- } 复制代码

编写完成后,就可以来到浏览器访问http://localhost:3000/jspang ,这时候你就可以看到你想要的结果了。

增加一个顶层路径

比如现在要在所有的路由前面加一个api的顶层路径,例如所有的路径形式变成http://localhost:3000/api/xxxxx 这个时候要如何编写那?其实方法也很简单,就是在最上层的@Controller( )加入一个api的字符串就可以了。

import { Controller, Get } from '@nestjs/common'; import { AppService } from './app.service'; @Controller('api') export class AppController {   constructor(private readonly appService: AppService) {}   @Get()   getHello(): string {     return this.appService.getHello();   } } 复制代码

这时候再次访问路径就变成了http://localhost:3000/api

创建一个模块和路由

上面这个路由是用NestJS CLI 自动给我们生成的,只是作一个参考,让我们可以看到一个页面。我们真实项目一般不是这样的,都是一个页面或者一个大的模块建立一个文件夹。在这个文件夹里有不同的controller、service和module。下面我就模拟真实中的开发,给大家创建一个Girl的模块,来讲述Controller的设置。

首先删除自动生成的测试文件app.controller.spec.ts、控制文件app.controller.tsapp.service.ts都删除掉。

然后进入到app.modlue.ts文件中,把刚才删除内容的引用,再次删除掉,删除后的文件如下。

删除前的app.module.ts文件

import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({   imports: [],   controllers: [AppController],   providers: [AppService], }) export class AppModule {} 复制代码

删除后的app.module.ts文件

import { Module } from '@nestjs/common'; @Module({   imports: [],   controllers: [],   providers: [], }) export class AppModule {} 复制代码

当删除都完成后,我们就可以新建模块了。NestJS 鼓励使用终端的形式新建模块,打开终端[Ctrl+Shift+`]。输入下面的命令,新建一个模块。

nest g module girl 复制代码

稍等一会,在/src目录下,就自动建立了一个girl的文件夹,在文件夹里还自动生成了girl.module.ts的。

再返回/src目录,可以看到在app.module.ts文件里,给我们自动引入了刚刚创建的模块。

import { Module } from '@nestjs/common'; import { GirlModule } from './girl/girl.module'; @Module({   imports: [GirlModule],   controllers: [],   providers: [], }) export class AppModule {} 复制代码

也就是说,我们用这种命令行创建的文件,NestJS CLI会自动为我们进行导入,比如现在我们再创建一个controller.

nest g controller girl --no-spec  复制代码

稍等一会,它自动为我们在/src/girl目录下,创建了girl.controller.ts文件。有了这个文件以后,我们就可以在这个文件里创建路由了。编写下面的代码:

import { Controller, Get } from '@nestjs/common'; @Controller('girl') export class GirlController {   @Get()   getGirls():any{     return{       code:0,       data:['翠花','小红','大丫'],       msg:'请求女孩列表成功'     }   } } 复制代码

编写完成后,在浏览器中打开http://localhost:3000/girl 就可以看到返回的信息了。 我们真实的开发更倾向于这种模式。

在main.ts设置默认前缀

这时候想在所有的请求加入前缀/honglangman,就可以到/src/main.ts里,编写下面的代码。

app.setGlobalPrefix('HongLangMan'); 复制代码

这时候的访问地址就变成了http://localhost:3000/honglangman/girl

好了,这节文章就到这里,我相信学完后你对NestJS里Controller的创建已经有了新的了解。下节课我们学习一下如何创建一个Service,然后如何在Service里编写业务逻辑。


作者:技术胖
链接:https://juejin.cn/post/7170927094568845348


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐