• 小满nestjs(第八章 nestjs 控制器)


    Controller Request (获取前端传过来的参数)

    nestjs 提供了方法参数装饰器 用来帮助我们快速获取参数 如下

    @Request()req          
    @Response()res                   
    @Next()next
    @Session()req.session
    @Param(key?: string)       req.params/req.params[key]
    @Body(key?: string)req.body/req.body[key]
    @Query(key?: string)req.query/req.query[key]
    @Headers(name?: string)   req.headers/req.headers[name]
    @HttpCode

    调试工具可以使用postMan  ApiFox 等

     下载地址 Apifox - API 文档、调试、Mock、测试一体化协作平台 - 接口文档工具,接口自动化测试工具,接口Mock工具,API文档工具,API Mock工具,API自动化测试工具

     

    1.获取get请求传参

    可以使用Request装饰器 或者 Query 装饰器 跟express 完全一样

     也可以使用Query 直接获取 不需要在通过req.query 了

     

    1. import { Controller, Get, Post, Body, Patch, Param, Delete, Version, Request, Query } from '@nestjs/common';
    2. import { UserService } from './user.service';
    3. import { CreateUserDto } from './dto/create-user.dto';
    4. import { UpdateUserDto } from './dto/update-user.dto';
    5. @Controller('user')
    6. export class UserController {
    7. constructor(private readonly userService: UserService) { }
    8. @Get()
    9. find(@Query() query) {
    10. console.log(query)
    11. return { code: 200 }
    12. }
    13. }

    2.post 获取参数

     可以使用Request装饰器 或者 Body 装饰器 跟express 完全一样

    或者直接使用Body 装饰器

      

    也可以直接读取key

     

     

    1. import { Controller, Get, Post, Body, Patch, Param, Delete, Version, Request, Query } from '@nestjs/common';
    2. import { UserService } from './user.service';
    3. import { CreateUserDto } from './dto/create-user.dto';
    4. import { UpdateUserDto } from './dto/update-user.dto';
    5. @Controller('user')
    6. export class UserController {
    7. constructor(private readonly userService: UserService) { }
    8. @Get()
    9. find(@Query() query) {
    10. console.log(query)
    11. return { code: 200 }
    12. }
    13. @Post()
    14. create (@Body() body) {
    15. console.log(body)
    16. return {
    17. code:200
    18. }
    19. }
    20. }

    3.动态路由

     可以使用Request装饰器 或者 Param 装饰器 跟express 完全一样

     

    1. import { Controller, Get, Post, Body, Patch, Param, Delete, Version, Request, Query } from '@nestjs/common';
    2. import { UserService } from './user.service';
    3. import { CreateUserDto } from './dto/create-user.dto';
    4. import { UpdateUserDto } from './dto/update-user.dto';
    5. @Controller('user')
    6. export class UserController {
    7. constructor(private readonly userService: UserService) { }
    8. @Get()
    9. find(@Query() query) {
    10. console.log(query)
    11. return { code: 200 }
    12. }
    13. @Post()
    14. create (@Body('name') body) {
    15. console.log(body)
    16. return {
    17. code:200
    18. }
    19. }
    20. @Get(':id')
    21. findId (@Param() param) {
    22. console.log(param)
    23. return {
    24. code:200
    25. }
    26. }
    27. }

    4.读取header 信息

    我在调试工具随便加了一个cookie

     

    1. import { Controller, Get, Post, Body, Patch, Param, Delete, Version, Request, Query, Ip, Header, Headers } from '@nestjs/common';
    2. import { UserService } from './user.service';
    3. import { CreateUserDto } from './dto/create-user.dto';
    4. import { UpdateUserDto } from './dto/update-user.dto';
    5. @Controller('user')
    6. export class UserController {
    7. constructor(private readonly userService: UserService) { }
    8. @Get()
    9. find(@Query() query) {
    10. console.log(query)
    11. return { code: 200 }
    12. }
    13. @Post()
    14. create (@Body('name') body) {
    15. console.log(body)
    16. return {
    17. code:200
    18. }
    19. }
    20. @Get(':id')
    21. findId (@Headers() header) {
    22. console.log(header)
    23. return {
    24. code:200
    25. }
    26. }
    27. }

    5.状态码

    使用 HttpCode 装饰器 控制接口返回的状态码 

    1. import { Controller, Get, Post, Body, Patch, Param, Delete, Version, Request, Query, Ip, Header, Headers, HttpCode } from '@nestjs/common';
    2. import { UserService } from './user.service';
    3. import { CreateUserDto } from './dto/create-user.dto';
    4. import { UpdateUserDto } from './dto/update-user.dto';
    5. @Controller('user')
    6. export class UserController {
    7. constructor(private readonly userService: UserService) { }
    8. @Get()
    9. find(@Query() query) {
    10. console.log(query)
    11. return { code: 200 }
    12. }
    13. @Post()
    14. create (@Body('name') body) {
    15. console.log(body)
    16. return {
    17. code:200
    18. }
    19. }
    20. @Get(':id')
    21. @HttpCode(500)
    22. findId (@Headers() header) {
    23. return {
    24. code:500
    25. }
    26. }
    27. }

     

  • 相关阅读:
    Redis实现消息队列(双端队列的模式,发布订阅模式)
    Thymeleaf 内联语法使用教程
    (尚硅谷)2021 版 SpringMVC 教程笔记
    轻松制作自己的 Linux 操作系统, smart-os 带您体验操作系统的制作原理
    Python基础(四)
    win10 mmdetection3d环境搭建
    linux内核等待队列wait_queue_head_t
    linux 压缩包解压
    优秀智慧园区案例 - 三亚市崖州湾科技城智慧园区,先进智慧园区建设方案经验
    SLAM本质剖析-Boost之Geometry函数大全(二)
  • 原文地址:https://blog.csdn.net/qq1195566313/article/details/126324056