NestJS入门教程—05.控制器和业务逻辑相结合

| # 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路由,如何传递参数,这些内容。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容