美文网首页让前端飞Web前端之路
Nest.js学习之路(5)-Controller读取Param

Nest.js学习之路(5)-Controller读取Param

作者: cbw100 | 来源:发表于2019-05-27 22:48 被阅读0次

在nest.js读取URL Param、Query String及Body资料很直观。

先把Server跑起來

yarn start:dev

然后准备fake data

// fake data
  inLearningPlatforms = [
    {
      id: 1,
      platformname: '极客教程',
      url: 'https://www.geekjc.com',
    },
    {
      id: 2,
      platformname: 'geekjc',
      url: 'https://www.geekjc.com',
    },
  ];

及传递资料的DTO(Data Transfer Object)物件

export class UserDTO{
    platformname: string;
    url: string;
 }

Param

以常见的id为例

/id

在Controller底下新增getUserById方法如下:

  @Get(':platformId')
  getPlatformById(@Param('platformId') id){
    const platform = this.inLearningPlatforms.find((platform) => platform.id === parseInt(id, 10)); //解析后都是字串,要使用parseInt转成number
    const resPlatform = new PlatformDTO();
    resPlatform.platformname = platform.username;
    resPlatform.url = platform.url;
    return resUser;
  }

@Get(':userId')意思是controller解析网址的时候,把最后一个url segment视作userId变数,透过@Param('路由变数')把数值指定给id,之后拿id来做搜寻使用者资料。

用Postman测试结果如下:


2018110505.png

Query String

以分页为例,Query String包含page与size两个变量

/?page=1&size=20

在Controller底下新增queryedList方法如下

@Get()
  queryedList(@Query() query): string {
    return query;
  }

@Query()会把Query String解析成javascript对象,Postman测试结果如下:


2018110506.png

Body

以新增学习平台为例,

修改上一章的create方法如下:

 @Post()
  create(@Body() platformDTO: PlatformDTO){ // platDTO: PlatformDTO代表platformDTO是PlatformDTO型別
    return `平台:${platformDTO.platformname}已建立`;
  }

用@Body来接收来自Request body的资料,Postman测试结果如下:


20181110507.png tuiguang.png

相关文章

网友评论

    本文标题:Nest.js学习之路(5)-Controller读取Param

    本文链接:https://www.haomeiwen.com/subject/aywjxqtx.html