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

本文介绍了Nest.js中如何处理请求头和路由参数。通过@Header()修饰器设置自定义请求头,并展示了获取单个、多个以及特定路由参数的方法。示例包括从GET请求中获取多个参数,并解决路由匹配顺序问题。
摘要由CSDN通过智能技术生成

请求头(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请求,得到如下:
在这里插入图片描述
这就就把一个自定义的请求头加上了。

路由参数

获取单个参数

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

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}`;
  }
}

在这里插入图片描述

获取多个参数

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

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}`;
  }
}

在这里插入图片描述

获取特定的参数

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

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会先匹配这个路由,从而会出现以下情况:
在这里插入图片描述
注释掉@Get(’:id’)后,重新运行的结果为:
在这里插入图片描述
这个时候,就拿到了name这个参数。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值