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.ts
和app.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