Nest.js学习笔记4:请求头(Headers)和获取路由参数

请求头(Headers)

有时候,需要指定自定义响应头,这个时候可以使用 @Header() 修饰器或类库特有的响应对象

import { Controller, Get, Header, HttpCode, Post } from '@nestjs/common';

@Controller('cats')
export class CatsController {
  @Post()
  @HttpCode(200)
  @Header('Cache-Control', 'defineHeader')
  createPost() {
    return '这里是Controller:POST路由的cats的createPost方法~';
  }

  @Get()
  findAllCats() {
    return '这里是Controller:cats的findAllCats方法~';
  }

  @Get('wjy*wjy')
  findWildcard() {
    return '这里是路由的通配符(*)';
  }
}

使用Postman发送一个POST请求,得到如下:
Nest.js学习笔记4:请求头(Headers)和获取路由参数_第1张图片
这就就把一个自定义的请求头加上了。

路由参数

获取单个参数

有时候,我们会在请求的路由中,夹杂着一些参数,怎样获取这个参数呢?

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

@Controller('cats')
export class CatsController {
  @Post()
  @HttpCode(200)
  @Header('Cache-Control', 'defineHeader')
  createPost() {
    return '这里是Controller:POST路由的cats的createPost方法~';
  }

  @Get()
  findAllCats() {
    return '这里是Controller:cats的findAllCats方法~';
  }

  @Get('wjy*wjy')
  findWildcard() {
    return '这里是路由的通配符(*)';
  }

  @Get(':id')
  findOne(@Param() params) {
    return `接受路由中的参数:${params.id}`;
  }
}

Nest.js学习笔记4:请求头(Headers)和获取路由参数_第2张图片

获取多个参数

有时候,路由中的参数可能不止一个,如何获取多个参数呢?

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

@Controller('cats')
export class CatsController {
  @Post()
  @HttpCode(200)
  @Header('Cache-Control', 'defineHeader')
  createPost() {
    return '这里是Controller:POST路由的cats的createPost方法~';
  }

  @Get()
  findAllCats() {
    return '这里是Controller:cats的findAllCats方法~';
  }

  @Get('wjy*wjy')
  findWildcard() {
    return '这里是路由的通配符(*)';
  }

  @Get(':id')
  findOne(@Param() params) {
    return `接受路由中的参数:${params.id}`;
  }

  @Get(':id/:name')
  findMore(@Param() params) {
    return `接受路由中的参数:id:${params.id},name:${params.name}`;
  }
}

Nest.js学习笔记4:请求头(Headers)和获取路由参数_第3张图片

获取特定的参数

获取特定的参数,在括号中传入其参数名,具体如下:

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

@Controller('cats')
export class CatsController {
  @Post()
  @HttpCode(200)
  @Header('Cache-Control', 'defineHeader')
  createPost() {
    return '这里是Controller:POST路由的cats的createPost方法~';
  }

  @Get()
  findAllCats() {
    return '这里是Controller:cats的findAllCats方法~';
  }

  @Get('wjy*wjy')
  findWildcard() {
    return '这里是路由的通配符(*)';
  }

  // @Get(':id')
  // findOne(@Param() params) {
  //   return `接受路由中的参数:${params.id}`;
  // }

  @Get(':id/:name')
  findMore(@Param() params) {
    return `接受路由中的参数:id:${params.id},name:${params.name}`;
  }

  @Get(':name')
  findName(@Param('name') name) {
    return `接受特定的参数Name:${name}`;
  }
}

这里先将@Get(’:id’)这个路由先注释掉了,因为这个路由在@Get(’:name’)的上面,Nest会先匹配这个路由,从而会出现以下情况:
Nest.js学习笔记4:请求头(Headers)和获取路由参数_第4张图片
注释掉@Get(’:id’)后,重新运行的结果为:
Nest.js学习笔记4:请求头(Headers)和获取路由参数_第5张图片
这个时候,就拿到了name这个参数。

你可能感兴趣的:(Nestjs)