NestJS学习:控制器

news2024/10/6 12:31:47

参考

控制器

控制器负责处理传入的请求和向客户端返回响应。
控制器的目的是接收应用的特定请求。路由机制控制哪个控制器接收哪些请求。通常,每个控制器有多个路由,不同的路由可以执行不同的操作。

控制器

上一篇文章已经介绍了路由的创建,下面基于创建好的路由来实现一些功能。

@Controller('user')
export class UserController {
  constructor(private readonly userService: UserService) { }

  @Post()
  create(@Body() createUserDto: CreateUserDto) {
    return this.userService.create(createUserDto);
  }

  @Get()
  findAll() {
    return this.userService.findAll();
  }

  @Get(':id')
  findOne(@Param('id') id: string) {
    return this.userService.findOne(+id);
  }
}

request

处理程序有时需要访问客户端的请求细节。Nest 提供了对底层平台(默认为 Express)的请求对象(request)的访问方式。我们可以在处理函数的签名中使用 @Req() 装饰器,指示 Nest 将请求对象注入处理程序。

import { Controller, Get, Post, Body, Param, Req } from '@nestjs/common';
import { Request } from 'express';
@Get()
findAll(@Req() request: Request) {
  console.log(request);
  return {
    code: 200,
    info: '@Req',
  };
}

接口请求返回的数据:
在这里插入图片描述
request对象(数据有点多,只截图了部分内容:
在这里插入图片描述
Request 对象代表 HTTP 请求,并具有查询字符串,请求参数参数,HTTP 标头(HTTP header) 和 正文(HTTP body)的属性(在这里)。在多数情况下,不必手动获取它们。 我们可以使用专用的装饰器,比如开箱即用的 @Body() 或 @Query() 。

@Query

@Query 主要用于获取get请求的参数,比如:

获取所有参数

import { Controller, Get, Post, Body, Param, Query } from '@nestjs/common';

@Get()
findAll(@Query() query) {
  console.log(query);
  return {
    code: 200,
    info: '@Query',
  };
}

Fehelper插件满足不了我们的get传参,这里推荐使用 Postwoman 接口调试插件
在这里插入图片描述
在这里插入图片描述
获取某一个参数

@Get()
findAll(@Query('name') name) {
  console.log(name);
  return {
    code: 200,
    info: '@Query',
  };
}

在这里插入图片描述
在这里插入图片描述
需要注意这样会直接获取到key值对应的属性,如果不存在结果则是undefined

@Body

@Body 主要是用来获取post请求的参数,与@Query相同,同样支持key的模式

获取所有参数

import { Controller, Get, Post, Body, Param, Query } from '@nestjs/common';
@Post()
create(@Body() body: Body) {
  console.log(body);
  return {
    code: 200,
    info: '@Body',
  };
}

在这里插入图片描述
在这里插入图片描述
获取某一个参数

 @Post()
 create(@Body('name') name: string) {
   console.log(name);
   return {
     code: 200,
     info: '@Body',
   };
 }

@Headers

@Headers 获取请求头数据,跟上面一样支持获取所有和单独的某一个

 @Get()
 findAll(@Headers() header) {
   console.log(header);
   return {
     code: 200,
     info: '@Headers',
   };
 }

在这里插入图片描述

其他

除了上面这几个外,官方还提供了@Session()@Ip()@Ip()等装饰器,具体可以查看官方文档。

路由通配符

路由同样支持模式匹配。例如,星号被用作通配符,将匹配任何字符组合。

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

路由路径 ‘ab*cd’ 将匹配 abcd 、ab_cd 、abecd 等。字符 ? 、+ 、 * 以及 () 是它们的正则表达式对应项的子集。连字符(-) 和点(.)按字符串路径逐字解析。

路由参数

静态参数

静态参数可以看作是在一个模块下的细小分支,用来指定具体的访问路径

@Get('aa')
findAll(@Headers() header) {
  console.log(header);
  return '访问aa';
}

在这里插入图片描述
动态参数
动态参数可以用于访问具有规律的路径,比如根据用户id访问用户

  @Get(':id')
  findOne(@Param('id') id: string) {
    return this.userService.findOne(+id);
  }

在这里插入图片描述
这里试了一下,静态参数和动态参数无法一起使用

异步

每个异步函数都必须返回一个 Promise。

  @Get(`getUserInfo`)
  async findAll(): Promise<string> {
    return '访问aa';
  }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/37370.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis缓存何以一枝独秀?以及热门面试题中Redis的核心特性

​Redis的各种数据类型 作为缓存组件&#xff0c;Redis的数据结构整体而言就是key-value类型的键值对&#xff0c;但是Redis对于value类型的支持还是比较丰富的&#xff0c;提供了5种不同的数据结构&#xff0c;可以满足大部分场景的使用诉求。 ​对几种类型的结构特点与使用注…

3天3定制大屏,反向PUA

摘要 本次分享一段无讨价还价余地的单人3天定制化大屏全过程&#xff08;强调说拖拽屏的请绕道,和你想的不一样&#xff09;,要动效、要地图、要流光。天坑的心理博弈到最终解决的过程及技术思路。 前因 没啥征兆突然接到说&#xff0c;要在下周完成2个大屏的定制开发,起初没提…

C51 - 定时器

Contents1> 概述(STC89C51RC/RD)2> 作用: CPU的 "闹钟"3> 工作原理 (16位计数器)[TL0 TH0]: 数据寄存器TF: 定时器<溢出>标志位4> 程序设计1> 概述(STC89C51RC/RD) STC89C51RC/RD 定时器数量: 3个; T0模式:工作模式 模式0: 13位计数器; 模式1: …

理解循环神经网络

理解循环神经网络 之前有一篇文章已经初步介绍过RNN的原理(https://forchenxi.github.io/2021/04/23/nlp-rnn/)&#xff0c;里面其实已经介绍的比较清晰易懂了&#xff0c;这篇文章再来回顾和拓展一下. 首先要知道RNN是一个带有内部环的神经网络&#xff0c;上面的这篇文章中…

港科夜闻|香港科大(广州)校长倪明选教授出席江门双碳实验室第一届理事会一次会议...

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、香港科大(广州)校长倪明选教授出席江门双碳实验室第一届理事会一次会议。11月21日下午&#xff0c;江门双碳实验室召开第一届理事会一次会议&#xff0c;审议通过有关文件&#xff0c;完善实验室组织架构&#xff0c;谋划下…

Python之条件语句逻辑运算符

目录 一、逻辑运算符 1.基本运算符 2.比较运算符 3.赋值运算符 二、 if条件语句 三、循环语句 一、逻辑运算符 1.基本运算符 2.比较运算符 3.赋值运算符 # 条件语句逻辑运算符 print((5 / 2)) print((5 // 2)) print((3 ** 2)) #3的2次方# 递增 # a1 # a1 # print(a) # a,b…

主流的深度学习推理架构有哪些(NCNNN)

AI 技术在具体落地应用方面&#xff0c;和其他软件技术一样&#xff0c;也需要具体的部署和实施。部署对于不同的平台设备上的部署方法和不同的架构工具。目前在人工智能的落地部署方面&#xff0c;各大平台机构都退出了自家的部署平台。 目前市场上应用最广泛的部署工具主要有…

用DIV+CSS技术设计的网上书城网页与实现制作(大一Web课程设计)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

Java项目:JSP中华传统美食网站平台管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 作者主页&#xff1a;夜未央5788 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目分为前台与后台&…

【网页设计】基于HTML+CSS+JavaScript学生网上报到系统响应式网站

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

计算机网络---万维网(WWW)

&#xff08;一&#xff09;WWW的概念与组成结构 万维网&#xff08;World Wide Web&#xff0c;WWW)是一个分布式、联机式的信息存储空间&#xff0c;在这个空间中:一样有用的事物称为一样“资源”&#xff0c;并由一个全域“统一资源定位符”(URL&#xff09;标识。这些资源通…

Scala的简单语法介绍

文章目录变量声明语句块if语句for循环while、do while数组Map映射tuple元组变量声明 //在Scala中val用于定义常量&#xff0c;var用于定义变量 var var_i 1 var_i 1val val_i 1 val_i 1 val_i 2运行结果如下&#xff1a; 可以看到&#xff0c;常量是初始复制就确定了&am…

Hello Erupt

前言 本系列将直接以Erupt的分布式方案为路线进行更新。本文的定位是Erupt的HelloWorld。目标&#xff0c;跑起来&#xff0c;让我们看看它是什么样的。 运行起来 准备一个数据库 第一步还是先运行起来。由于最近接触的公司项目都是在使用mysql的驱动&#xff0c;这里我也就…

python+人脸识别+opencv实现真实人脸驱动的阿凡达(上)

目录一、前言二、技术路线三、主要技术点分析(1) 人脸识别模块特征点的漂移(2) 柔性运动与刚性运动的处理setp1 基于人脸特征点的三角剖分setp2 基于三角映射的仿射变换(3) 正脸转侧脸的处理四、小结一、前言 我们在此前的名叫pythonopencv实现人脸微整形博文里已经简单地实现…

Java GUI图形编程 使用awt和swing 制作简易计算器的工具包含源码和讲解 / java练习项目

系列文章目录 提示&#xff1a;阅读本章之前&#xff0c;请先阅读目录 文章目录系列文章目录前言一、常规配置1. 设置窗口大小2. 获取当前屏幕的尺寸3. 窗口居中4. 设置窗口名称5. 添加监听器&#xff0c;关闭窗口6. 设置窗口可见性7. 设置文本框不可编辑8. 设置文本框提示9. 设…

OpenGL原理与实践——核心模式(六):光照贴图、光源分类以及多光源场景主要源码实现

本章主要以代码为主&#xff0c;理论理解即可。详细分析代码 目录 光照贴图 光源分类 平行光 点光源 shader——点光源 聚光灯 聚光灯边缘优化——光强递减 源码解析 main 全局变量、句柄 main函数主体逻辑 createModel() createTexture(const char* _filename) …

骨感传导蓝牙耳机怎么样,骨感传导耳机对于我们耳道是否有保护

在现在数码产品普及生活的时代&#xff0c;耳机也成为了我们每天的标准&#xff0c;以往佩戴的都是入耳式的耳机&#xff0c;但长时间佩戴下会出现耳朵疼痛&#xff0c;严重的更会导致听力障碍的问题发生&#xff0c;针对这一现象&#xff0c;一种新型的骨感传导耳机来到了我们…

后台默默付出的劳动者,四大组件之服务(Service)

后台默默付出的劳动者&#xff0c;四大组件之服务Service前言十、后台默默付出的劳动者&#xff0c;四大组件之服务&#xff08;Service&#xff09;10.1 服务是啥&#xff1f;10.2 Android异步消息处理机制10.2.1 Android异步消息处理机制介绍10.2.2 基于Android异步消息处理机…

Packet Tracer - 排除多区域 OSPFv2 故障

地址分配表 设备 接口 IP 地址 子网掩码 默认网关 ISP GigabitEthernet0/0 209.165.200.17 255.255.255.240 不适用 ASBR GigabitEthernet0/0 209.165.200.18 255.255.255.240 不适用 Serial0/0/0 10.1.1.2 255.255.255.252 不适用 Serial0/0/1 10.2.2…

制作一个企业网站——html华为官网购物商城项目的设计与实现

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…