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

简介: 小满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自动化测试工具

74fbf871d5004e58abe3fba981b2fbb2.png


1.获取get请求传参


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


9f673fd619b643ebad0d0d02cadb02e8.png


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


3957dc61a1cc4719b92ae236a59d7c89.png


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('user')
export class UserController {
  constructor(private readonly userService: UserService) { }
  @Get()
  find(@Query() query) {
    console.log(query)
    return { code: 200 }
  }
}


2.post 获取参数


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


210ac37854714438a5f2c2b5385967b4.png


或者直接使用Body 装饰器


d54ed57d83b24ae38377e1c0d0e17372.png


也可以直接读取key


33454cfde24b46b6b0ede32eb89bbf82.png


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('user')
export class UserController {
  constructor(private readonly userService: UserService) { }
  @Get()
  find(@Query() query) {
    console.log(query)
    return { code: 200 }
  }
  @Post()
  create (@Body() body) {
    console.log(body)
    return {
       code:200
    }
  }
}


3.动态路由


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


b790aeebe8f444488f721491cb2581a9.png

96a5bc5570df4d24a976347017d1517e.png


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('user')
export class UserController {
  constructor(private readonly userService: UserService) { }
  @Get()
  find(@Query() query) {
    console.log(query)
    return { code: 200 }
  }
  @Post()
  create (@Body('name') body) {
    console.log(body)
    return {
       code:200
    }
  }
  @Get(':id')
  findId (@Param() param) {
    console.log(param)
    return {
       code:200
    }
  }
}


4.读取header 信息


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


1618ecf69b214bd49fffeab19abb897c.png


import { Controller, Get, Post, Body, Patch, Param, Delete, Version, Request, Query, Ip, Header, Headers } from '@nestjs/common';
import { UserService } from './user.service';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
@Controller('user')
export class UserController {
  constructor(private readonly userService: UserService) { }
  @Get()
  find(@Query() query) {
    console.log(query)
    return { code: 200 }
  }
  @Post()
  create (@Body('name') body) {
    console.log(body)
    return {
       code:200
    }
  }
  @Get(':id')
  findId (@Headers() header) {
    console.log(header)
    return {
       code:200
    }
  }
}


5.状态码


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


d3fc2406b79f40c296f9bba4223b80c8.png


import { Controller, Get, Post, Body, Patch, Param, Delete, Version, Request, Query, Ip, Header, 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('user')
export class UserController {
  constructor(private readonly userService: UserService) { }
  @Get()
  find(@Query() query) {
    console.log(query)
    return { code: 200 }
  }
  @Post()
  create (@Body('name') body) {
    console.log(body)
    return {
       code:200
    }
  }
  @Get(':id')
  @HttpCode(500)
  findId (@Headers() header) {
    return {
       code:500
    }
  }
}


目录
相关文章
|
5天前
|
数据库
小满nestjs(第二十八章 nestjs 事务)
小满nestjs(第二十八章 nestjs 事务)
103 0
小满nestjs(第二十八章 nestjs 事务)
|
前端开发
小满nestjs(第十章 nestjs 提供者)
如果服务 之间有相互的依赖 或者逻辑处理 可以使用 useFactory
127 0
小满nestjs(第十章 nestjs 提供者)
小满nestjs(第十一章 nestjs 模块)
每个 Nest 应用程序至少有一个模块,即根模块。根模块是 Nest 开始安排应用程序树的地方。事实上,根模块可能是应用程序中唯一的模块,特别是当应用程序很小时,但是对于大型程序来说这是没有意义的。在大多数情况下,您将拥有多个模块,每个模块都有一组紧密相关的功能
93 0
小满nestjs(第十一章 nestjs 模块)
|
中间件
小满nestjs(第十二章 nestjs 中间件)
中间件是在路由处理程序 之前 调用的函数。 中间件函数可以访问请求和响应对象
181 0
小满nestjs(第十二章 nestjs 中间件)
小满nestjs(第二十二章 nestjs 自定义装饰器)
在Nestjs 中我们使用了大量装饰器 decorator ,所以Nestjs 也允许我们去自定义装饰器。
112 0
小满nestjs(第二十二章 nestjs 自定义装饰器)
|
JavaScript API
小满nestjs(第十五章 nestjs 和 RxJs)
nterval 五百毫秒执行一次 pipe 就是管道的意思 管道里面也是可以去掉接口的支持处理异步数据 去处理数据 这儿展示 了 map 和 filter 跟数组的方法是一样的 最后 通过观察者 subscribe 接受回调
74 0
小满nestjs(第十五章 nestjs 和 RxJs)
|
前端开发
小满nestjs(第九章 nestjs Session)
session 是服务器 为每个用户的浏览器创建的一个会话对象 这个session 会记录到 浏览器的 cookie 用来区分用户
259 0
小满nestjs(第九章 nestjs Session)
|
中间件 数据安全/隐私保护
小满nestjs(第二十一章 nestjs 守卫)
守卫有一个单独的责任。它们根据运行时出现的某些条件(例如权限,角色,访问控制列表等)来确定给定的请求是否由路由处理程序处理。这通常称为授权。在传统的 Express 应用程序中,通常由中间件处理授权(以及认证)。中间件是身份验证的良好选择,因为诸如 token 验证或添加属性到 request 对象上与特定路由(及其元数据)没有强关联。
203 0
小满nestjs(第二十一章 nestjs 守卫)
小满nestjs(第十七章 nestjs 异常拦截器)
让我们创建一个异常过滤器,它负责捕获作为HttpException类实例的异常,并为它们设置自定义响应逻辑。为此,我们需要访问底层平台 Request和 Response。我们将访问Request对象,以便提取原始 url并将其包含在日志信息中。我们将使用 Response.json()方法,使用 Response对象直接控制发送的响应。
94 0
小满nestjs(第十七章 nestjs 异常拦截器)
|
前端开发
小满nestjs(第十九章 nestjs 管道验证DTO)
小满nestjs(第十九章 nestjs 管道验证DTO)
128 0
小满nestjs(第十九章 nestjs 管道验证DTO)