首页 > 其他分享 >002nestjs控制器(controller)

002nestjs控制器(controller)

时间:2024-04-10 18:13:44浏览次数:30  
标签:控制器 return string Get req 002nestjs controller cats action

一、控制器的作用

控制器负责处理传入请求并向客户端返回响应

二、使用方法

新建/cats目录
创建cats.controller.ts
在里面添加如下内容

import { Controller, Get } from '@nestjs/common';

@Controller('cats')
export class CatsController {
  @Get()
  findAll(): string {
    return 'This action returns all cats';
  }
}

其中
@controller代表这是一个控制器类,里面的参数cats代表匹配路径为/cats
@Get装饰器代表可以匹配的Http请求(此处是GET),并且装饰器中可以添加路径,如

  @Get('/breed')
  findAll(): string {
    return 'This action returns all cats';
  }

可以命中的路径为/cats/breed,还支持通配符?、+、* 和 ()

@Get('ab*cd')
findAll() {
  return 'This route uses a wildcard';
}

可以匹配的路由有 abcd、ab_cd、abecd
nest还提供了其他方法的装饰器,如@Get()、@Post()、@Put()、@Delete()、@Patch()、@Options() 和 @Head()
findAll代表匹配之后触发的方法,名称可以随意取

三、请求对象

nest提供对请求对象的访问(默认使用express)

import { Controller, Get, Req } from '@nestjs/common';
import { Request } from 'express';

@Controller('cats')
export class CatsController {
  @Get()
  findAll(@Req() request: Request): string {
    return 'This action returns all cats';
  }
}

@Req()使用之后可以访问到请求对象
nest还提供了许多装饰器用于获取请求对象的某些属性

名称 对用的请求属性
@Request(), @Req() req
@Response(), @Res()* 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]
@Ip() req.ip
@HostParam() req.hosts

四、路由相关设置

1.状态码

可以通过@HttpCode()设置状态码

@Post()
@HttpCode(204)
create() {
  return 'This action adds a new cat';
}

2.标头

使用 @Header() 装饰器,设置自定义标头内容

@Post()
@Header('Cache-Control', 'none')
create() {
  return 'This action adds a new cat';
}

3.重定向

使用@Redirect重定向路由

@Get()
@Redirect('https://nest.nodejs.cn', 301)
findAll(): string {
  return 'This action returns all cats';
}

4.路由参数

接收动态路由参数,如: /cats/1

@Get(':id')
findOne(@Param() params: any): string {
  console.log(params.id);
  return `This action returns a #${params.id} cat`;
}

接收query参数,如:/cats?name=abc&age=12

@Get()
  findAll(@Query() obj: any): string {
    console.log('obj ', obj)
    return 'This action returns all cats';
  }

此外@Query()装饰器可以接收一个字符串来获取指定的属性

@Get()
  findAll(@Query('name') obj: any): string {
    console.log('name', obj)
    return 'This action returns all cats';
  }

标签:控制器,return,string,Get,req,002nestjs,controller,cats,action
From: https://www.cnblogs.com/idrinkmilk/p/18127116

相关文章

  • 暖心推荐CAL温度控制器CAL33-00-000
    暖心推荐CAL温度控制器CAL33-00-000暖心推荐CAL温度控制器CAL33-00-000暖心推荐CAL温度控制器CAL33-00-000PID温度控制器-3200(32E)小型1/32ndDIN自动PID温度控制器-3200(32E)型号3200是在1992推出的1/32ndDIN(24mmx48mm)温度控制器。该型号至今仍然全面投产。为*新1......
  • 【Spring高级】SpringMVC中控制器方法HandlerMethod的工作流程
    目录流程图演示流程图先分3个部分来看下整体的流程图图1ServletInvocableHandlerMethod是SpringFramework中对HandlerMethod的实现。ServletInvocableHandlerMethod的整体架构图......
  • 针对电机和逆变器控制解决方案的R7FA6T2AB3CFM、R7FA6T2AD3CFM、R7FA6T2AD3CFP、R7FA6
    RA6T2:240MHzArm®Cortex®-M33TrustZone®,适用于电机控制的高实时引擎说明RA6T2群组是第二款针对电机和逆变器控制解决方案的RAASSP产品。RA6T2将ArmCortex®-M33与用于电机控制的硬件加速器以及用于实现240MHz高速实时性能的高速闪存相结合。它还可以实现下一代......
  • 记一次在使用Asp.Net Core 8.0 中使用Entity Framework Core的Api控制器生成Rest Api
    问题描述:把实体模型建好了,数据上下文也建好了,数据库连接字符串也在appsetting.json中配置好了,服务也注入了,然后不想一个一个的写控制器的方法,想用Api控制器生成现成的CURD方法,结果一连串的报错,在网上和GitHub也看了各位的解决办法,但都是以失望的报错,现在将解决问题的方法如下。1......
  • Replication Controller、ReplicaSet和Deployment(Kubernetes调度系列,结合操作命令讲解
    目录一、概述二、ReplicationController2.1ReplicationController说明2.2ReplicationController举例三、ReplicaSet3.1ReplicaSet说明3.2ReplicaSet举例四、无状态应用管理Deployment4.1概述4.2创建Deployment4.2.1Deployment标签内容解析4.2.2ku......
  • @ControllerAdvice 的介绍及三种用法
    浅析@ControllerAdvice首先,ControllerAdvice本质上是一个Component,因此也会被当成组建扫描,一视同仁,扫扫扫。 然后,我们来看一下此类的注释:这个类是为那些声明了(@ExceptionHandler、@InitBinder或@ModelAttribute注解修饰的)方法的类而提供的专业化的@Component,以供多个C......
  • Win11系统提示找不到AppVEntSubsystemController.dll
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个AppVEntSubsystemController.dll文件(挑选合......
  • 后端开发基础概念 Entity,DO,DTO,DAO,VO, Service,Controller
    Entity主要用于ORM(对象关系映射)框架中,如Hibernate、MyBatis等,以便将数据库中的数据映射为对象,方便进行业务操作。Entity通常与数据库表一一对应,代表业务数据的基本单元。通常放在项目的model或entity包下。DO(DataObject)是一个更广泛的概念,它指的是用于在应用程序中传输数据......
  • IfcControllerTypeEnum
    IfcControllerTypeEnum类型定义IfcControllerTypeEnum定义了可以指定的不同类型控制器的范围。IFC2.0中的新枚举。IFC4 PROPORTIONALINTEGRAL和PROPORTIONALINTEGRALDERIVATIVE值已删除(现在使用属性集枚举)。添加了MULTIPOSITION。 EnumerationdefinitionConstantDescri......
  • 为什么 InputComponent->BindAxis(TEXT("ViewHorizontalOffSet"),this,&AMarioControl
    在UnrealEngine中,InputComponent->BindAxis和事件绑定(如OnComponentBeginOverlap)使用不同的系统和要求。这些差异导致了在绑定函数时对UFUNCTION()宏的不同需求。BindAxis和UFUNCTION()宏BindAxis:用于绑定输入轴(如游戏手柄的移动或旋转)。当绑定轴输入时,BindAxis函数直接引用......