| # 05.NestJS控制器Controller_业务逻辑(Service)相结合 <–点击观看视频
继续上节课的内容,这节是上节的补充。上节课新建了girl
模块,然后在girl
模块下面新建了girl.controller.ts
控制器,并返回了一个JSON
对象。但现在有个问题,按NestJS规定是不应该在controller
里写任何的业务逻辑,而是把业务逻辑放在girl.service.ts
这个文件中。
用命令行创建service
同样使用终端命令行的形式创建girl.service.ts
文件,在VSCode中打开终端,输入下面的命令。
nest g service girl --no-spec
稍等一会,就会给我们两句提示。
CREATE src/girl/girl.service.ts (88 bytes)
UPDATE src/girl/girl.module.ts (240 bytes)
看到这个就说明我们已经创建成功了。第一句是告诉我们girl.service.ts
文件创建成功了,第二句话是告诉自动更新girl.module.ts
文件。
Controller(控制器)引入service(逻辑)
service的文件属于逻辑层,按照约束,需要我们把业务逻辑相关的东西都写到这个文件里。当service文件创建好以后,我们需要作的第一件事,就是把service引入到controller控制器里。打开girl.controller.ts
文件,编写下面的代码。
import { Controller, Get } from '@nestjs/common';
import { GirlService } from './girl.service';
@Controller('girl')
export class GirlController {
constructor(private girlService:GirlService){}
//this.girlService = new GirlService();
//.......
}
在service里编写业务逻辑
在控制器里引入service后,就可以在service里编写业务逻辑了。比如我们把返回的代码移入girl.service.ts
,代码如下。
import { Injectable } from '@nestjs/common';
@Injectable()
export class GirlService {
getGirls(){
return{
code:0,
data:['翠花','小红','大丫'],
msg:'请求女孩列表成功'
};
}
}
这里的代码就相当于业务逻辑了,写完后,还需要回到girl.controller.ts
里,在getGirls( )
方法里使用service里的getGirls( )
方法。
import { Controller, Get } from '@nestjs/common';
import { GirlService } from './girl.service';
@Controller('girl')
export class GirlController {
constructor(private girlService:GirlService){}
@Get()
getGirls():any{
return this.girlService.getGirls();
}
}
写完上面这句代码后,就可以在浏览器中http://localhost:3000/girl
进行访问。如果一切正常,依然可以看到上节课访问时一模一样的内容,只不过这时候我们的业务逻辑,已经挪到了Service
中。上面这些就是我们在创建一个基本Moudule
后,要作的基本操作。 下节课继续讲解Controller相关的内容,会讲一下如何创建POST路由,如何传递参数,这些内容。
暂无评论内容