• 小满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. }

     

  • 相关阅读:
    uniapp入门:常用事件绑定与数据同步
    8年测试经验,简单易懂的讲解一下什么是自动化测试?
    Promise 静态 API 的使用方法
    UTONMOS:AI+Web3+元宇宙数字化“三位一体”将触发经济新爆点
    软件测试---场景法(功能测试)
    五. 激光雷达建图和定位方案-引言
    2022年深圳市促进大健康产业集群高质量发展的若干措施
    eclipse的安装与配置详细教程(包括UML插件 汉化 JDK 代码补全 导入导出等)
    附加:为什么在Spring Boot项目中,一般默认可以不使用@ComponentScan,其就能自动扫描;
    React基础详解(一)
  • 原文地址:https://blog.csdn.net/qq1195566313/article/details/126324056