一个Post请求入门NestJS的路由与控制器

在这里插入图片描述

NestJS的控制器

控制器负责处理传入请求并向客户端返回响应。

控制器的目的是接收应用的特定请求。路由机制控制哪个控制器接收哪些请求。 通常,每个控制器都有不止一条路由,不同的路由可以执行不同的操作。

在使用了脚手架的项目中,我们都会使用 nest g controller 指令来创建一个新的控制器。

如:使用 nest g controller article 我们可以创建一个名为article的文件夹,作用就是专门处理endpoint为article的请求。

nest g controller article

在这里插入图片描述

NestJS的路由

在NestJS中,并没有具体的路由文件去指向不同的endpoint到特定的控制类文件中去处理,而是通过 @controller() 的装饰器去定义基本的控制器,且在 @controller() 中使用路径来对路由进行匹配。

如当我们在使用了 nest g controller 指令创建出一个控制器之后,我们可以在创建的class中添加如下代码,就可以将endpoint为article的路径都匹配到。

@Controller('article')

请求处理

至此,有了控制器以及路由作为基础知识,我们可以很快的复制出脚手架中的文件,即下图的/hello请求的接口,只是请求的链接设置为了/artcle/hello。

设置post请求的方式,需要首先将我们的@GET修改为@POST,则该接口会被修改为post请求允许访问。

除此之外,还有Delete、patch、update等常用methods

import { Controller, Post } from '@nestjs/common';
​
@Controller('article')
export class ArticleController {
  @Post('create')
  create(): string {
    return '创建文章成功';
  }
}

​ 但此时依旧是无法获取到参数的,如创建文章时候,我们至少需要一个title参数,而该参数我们会将其放在body中,所以我们需要在方法中获取到body,需要实现赋值,所以我们会这么写

import { Body, Controller, Post } from '@nestjs/common';
​
@Controller('article')
export class ArticleController {
  @Post('create')
  create(@Body() body): string {
    console.log(`文章的标题是:${body?.title}`);
    return '创建文章成功';
  }
}

​ 此时,一个最简单的post请求就完成了。

PostMan验证

写完之后,我们需要用postman验证下我们的写法是否正确。

在这里插入图片描述

终端的打印结果如下 在这里插入图片描述

公众号文章地址

原创不易,求关注~