NestJS入门教程— 04.Controller/路由的创建
上一节介绍目录的时候我说过/src/app.controller.ts
是控制器,其实也就是编写路由。
新建一个路由/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