1.获取get请求传参
我们可以通过不同的参数装饰器获取前端传来ajax的get请求中不同的内容
- @Request(),可以获取req对象,req.query可以获得Query参数装饰器的内容
- @Query(),可以直接获取到req对象中query属性的内容
通过Query参数装饰器来获取到前端传来的参数,参考以下代码:
import { Controller, Get, Post, Body, Patch, Param, Delete, Version,Request, Query } from '@nestjs/common';
import { UserService } from './user.service';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
@Controller({
path:"user"
})
export class UserController {
constructor(private readonly userService: UserService) {}
@Get()
findAll(@Query() query){
console.log(query)
return {
code:200,
message:query.name
}
}
}
我们在apifox上模拟前端发送get请求,前端得到的接口数据为:
后端打印出来收到的参数为:
2.获取post请求传参
我们可以通过这两种参数装饰器获取前端传来ajax的post请求中不同的内容
- @Request(),可以获取req对象,req.body可以获得Body参数装饰器的内容
- @Body(),可以直接获取到req对象中body属性的内容
通过参数装饰器来获取到前端传来的参数,参考以下代码:
import { Controller, Get, Post, Body, Patch, Param, Delete, Version,Request, Query } from '@nestjs/common';
import { UserService } from './user.service';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
@Controller({
path:"user"
})
export class UserController {
constructor(private readonly userService: UserService) {}
@Post()
AddData(@Body("name") name){
console.log(name)
return {
code:200,
message:"Post"+ name
}
}
}
我们在apifox上模拟前端发送post请求,前端得到的接口数据为:
后端打印出来收到的参数为:
3.获取动态路由参数
同样的,我们也可以用这两种参数装饰器来获取动态路由的参数
- @Request(),可以获取req对象,req.params可以获取Param参数装饰器的内容
- @Param(),可以直接获取到req对象中params属性的内容
import { Controller, Get, Post, Body, Patch, Param, Delete, Version,Request, Query } from '@nestjs/common';
import { UserService } from './user.service';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
@Controller({
path:"user"
})
export class UserController {
constructor(private readonly userService: UserService) {}
@Get(":id")
findId(@Request() req){
console.log(req.params)
return{
code:200,
message:req.params
}
}
}
我们在apifox上模拟前端发送get动态路由请求,前端得到的接口数据为:
后端打印出来收到的参数为:
4.获取请求头信息
获取请求头信息利用的是Header参数装饰器,有了上面介绍过的装饰器的用法,其实所有装饰器的用法都类似。
参考以下代码:
import { Controller, Get, Post, Body, Patch, Param, Delete, Version,Request, Query,Headers } from '@nestjs/common';
import { UserService } from './user.service';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
@Controller({
path:"user"
})
export class UserController {
constructor(private readonly userService: UserService) {}
@Get(":id")
findId(@Request() req, @Headers() head){
console.log(head)
return{
code:200,
head,
message:req.params
}
}
}
发送带有cookie的请求,前端得到的接口数据为:
后端打印的数据为:
5、获取状态码
通过 @HttpCode 这个函数装饰器,我们可以设置响应的状态码,例如:
import { Controller, Get, Post, Body, Patch, Param, Delete, Version,Request, Query,Headers,HttpCode } from '@nestjs/common';
import { UserService } from './user.service';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
@Controller({
path:"user"
})
export class UserController {
constructor(private readonly userService: UserService) {}
@Get(':id')
@HttpCode(500)
findId (@Headers() header) {
return {
code:500
}
}
}
前端得到的响应: