Web后台服务开发——POST方法和Payload

文章转自 极客论坛

添加POST方法的路由分一下几个步骤

第一步,添加@Post装饰器

import { Controller, Get, Param, Post, Body } from '@nestjs/common';

@Controller('v1')
export class V1Controller {
   @Get('/hello/:id')
   sayHello(@Param() params) {
       return `Hello Controller ${params.id}`;
   }

  @Post('/hi')
   sayHi() {
   }
}


第二步,创建DTO(Data Transfer Object),就是描述数据格式的类型

在src目录中创建dto目录,然后进入dto目录执行 nest generate class hiDto,这时代码结构如下

normal

我们打开hi-dto.ts,给HiDto类添加字段

export class HiDto {
  readonly name: string;
   readonly age: number;

}

这表示,我们正在编写的路由接受的参数是形如 { "name": "Tom", "age": 10} 这样的json数据。


第三步,重新修改我们的controller文件,添加@Body装饰器

import { Controller, Get, Param, Post, Body } from '@nestjs/common';
import { HiDto } from 'src/dto/hi-dto';

@Controller('v1')
export class V1Controller {
   @Get('/hello/:id')
   sayHello(@Param() params) {
       return `Hello Controller ${params.id}`;
   }

  @Post('/hi')
   sayHi(@Body() hiDto: HiDto) {

   }
}


第四步,使用POST参数

import { Controller, Get, Param, Post, Body } from '@nestjs/common';
import { HiDto } from 'src/dto/hi-dto';

@Controller('v1')
export class V1Controller {
   @Get('/hello/:id')
   sayHello(@Param() params) {
       return `Hello Controller ${params.id}`;
   }

  @Post('/hi')
   sayHi(@Body() hiDto: HiDto) {
       console.log(hiDto);
       return hiDto;

   }
}

hiDto就是POST传递的参数。


第五步,用curl发送一个请求,测试路由

首先,运行项目,npm run start;

其次,打开git bash,用curl发送命令。(当然,你也可以学习一下postman这个工具)

curl http://localhost:3000/v1/hi -X POST -d '{"name": "Tom", "age": 10}' -H 'Content-Type: application/json'



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章