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

     

  • 相关阅读:
    react06-jsx渲染机制
    VUE2 与 VUE3 中监听器watch的区别
    scrapy爬虫之网站图片爬取
    基本程序单元Activity
    综合工具-Design Compiler使用(从RTL到综合出各种报告timing\area\critical_path)
    【数字信号调制】基于PCM编码和QAM调制系统附matlab代码
    ubuntu 添加、删除用户,修改用户名称,修改主机名
    轻量级多级菜单控制框架程序(C语言)
    h5修改钉钉双标题栏问题
    AVL树的实现及原理
  • 原文地址:https://blog.csdn.net/qq1195566313/article/details/126324056