首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

深入理解 Nest.js 控制器:构建强大的RESTful API

在上面的示例中,我们使用了 @Param 装饰器来获取路由参数(如用户的 ID),而使用了 @Body 装饰器来获取请求体数据。让我们更深入地探讨它们的工作原理。...这样,我们可以在方法中访问 'id' 参数的。处理请求体数据请求体数据通常用于创建或更新资源时发送的数据。在 Nest.js 中,我们使用 @Body 装饰器来捕获请求体数据。...控制器方法的返回Nest.js 控制器的方法可以返回各种不同类型的,这些将作为 HTTP 响应返回给客户端。...然后,我们通过 apply 方法将中间件应用到 /users 路由下的所有请求。结语--Nest.js 控制器是构建强大的 RESTful API 的关键组件之一。...希望这篇文章对您的 Nest.js 学习和开发过程有所帮助。正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

31920

Nest.js 实战系列四:使用管道、DTO 验证入参,摆脱 if-else 的恐惧

管道有两个类型: 转换:管道将输入数据转换为所需的数据输出; 验证:对输入数据进行验证,如果验证成功继续传递,验证失败则抛出异常; ValidationPipe 是 Nest.js 自带的三个开箱即用的管道之一...ValidationPipe 只接受一个并立即返回相同的,其行为类似于一个标识函数,标准代码如下: import { PipeTransform, Injectable, ArgumentMetadata...绑定管道 绑定管道非常简单,就和之前使用 Guards 那样,直接用修饰符绑定在 Controller 上,然后将 body 的类型指定 DTO 即可: // src/logical/user/user.controller.ts...(body); } } 4....实战系列二:数据库连接与使用 Nest.js 实战系列一:项目创建&路由设置&模块 Nest.js 实战系列三:JWT 实现单点登录 Nest.js 实战系列四:使用中间件、拦截器、过滤器打造日志系统

3.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

学完这篇 Nest.js 实战,还没入门的来锤!(长文预警)

学完这篇 Nest.js 实战,还没入门的来锤!...为什么选择Nest.js 前面也说了, 大家都说香啊~ 其次,之前也使用过Egg.js,19年使用的时候,感觉egg约束性比较强,但是对于内部统一规范还是有好处的,但现在2021了, 已经习惯了TS,...这里省略一个漫长的等待过程~, 终于看到了它成功了(然后又删除了,使用yarn,确实速度快了很多) 接下来按照提示运行项目: 这里说一下安装的环境,Nest.js版本不同有些API会有差异 包...这里用swagger,用它的原因一方面是 Nest.js提供了专用的模块来使用它,其次可以精确的展示每个字段意义,只要注解写的到位!...首先想到的是在业务中去写一堆的if-elese判断用户的传参,一想到一堆的判断, 这绝对不是明智之举,所有去查了Nest.js中数据验证,发现Nest.js中的管道就是专门用来做数据转换的,我们看一下它的定义

9.2K11

Nest.js 快速入门:实现对 Mysql 单表的 CRUD

比如图中创建了 hello 的数据库和一堆表。 Node.js 代码里同样可以连接上数据库服务,然后远程执行 sql 来对数据库表做增删改查。...但直接执行 sql 比较繁琐,能不能只操作对象,对象属性变了就自动去执行 sql 来同步数据库呢?就像 vue 的数据变了自动同步视图一样。...http 请求和 Nest.js 处理请求的后端框架我们使用 Nest.js,它提供了 Controller、Service 等划分,这是对 MVC 模式的实现。...因为所有的对象都是由容器管理的,那么自然就可以在创建对象的时候注入它需要的依赖,这就是 IOC 的原理。...Typeorm 和 Nest.js 的结合使用 @nestjs/typeorm 的包,它提供了一个 TypeormModule 的模块,有 forRoot 和 forFeature 两个静态方法。

4K30

学完这篇 Nest.js 实战,还没入门的来锤!(长文预警)

为什么选择Nest.js 前面也说了, 大家都说香啊~ 其次,之前也使用过Egg.js,19年使用的时候,感觉egg约束性比较强,但是对于内部统一规范还是有好处的,但现在2021了, 已经习惯了TS,...这里省略一个漫长的等待过程~, 终于看到了它成功了(然后又删除了,使用yarn,确实速度快了很多) 接下来按照提示运行项目: 这里说一下安装的环境,Nest.js版本不同有些API会有差异 包...给你呈现一下当时踩得坑: 当时写了一个Category实体, 然后增加一个Tag实体 复制了category.entity.ts,放到tag文件夹下,并且更名为tag.entiry.ts 修改了内部的属性...这里用swagger,用它的原因一方面是 Nest.js提供了专用的模块来使用它,其次可以精确的展示每个字段意义,只要注解写的到位!...首先想到的是在业务中去写一堆的if-elese判断用户的传参,一想到一堆的判断, 这绝对不是明智之举,所有去查了Nest.js中数据验证,发现Nest.js中的管道就是专门用来做数据转换的,我们看一下它的定义

12K42

一个参数验证,学会 Nest.js 的两大机制:Pipe、ExceptionFilter

输入做验证是一个 web 应用的基本功能,不止前端要做、后端也要做: 前端做验证可以避免没必要的请求,尽快给用户反馈 后端做验证可以防止一些绕过浏览器的恶意提交 前端做表单的验证基本不用自己写,有很多...ParseFloatPipe DefaultValuePipe 可以分为 3 类: parseXxx,把参数转为某种类型;defaultValue,设置参数默认;validation,做参数的验证。...Nest.js 支持异常过滤器(ExceptionFilter),可以声明对什么错误做什么响应,这样应用返回什么响应只需要抛相应的异常。...NotFoundException 返回 404,代表没找到资源 返回什么响应就抛什么 exception 就行,不够的话还可以自定义 ExceptionFilter。...总结 对输入的验证是一个基本功能,前后端都要做。 我们先过了一下 Nest.js 的基础:Nest.js 是 MVC + IOC 的架构,并且支持 Module 来组织代码。

1.1K10

做了一个Nest.js上手项目,很丑,但适合练手和收藏

前言 最近爱了上 Nest.js 这个框架,边学边做了一个 nest-todo 这个项目。...虽然 Nest.js 文档也齐全,但是如果你稍微做重一点的业务,它就有点顶不住了,很多东西都要 试。那这个时候 nest-todo 就可以站出来说:“不会就抄吧,肯定能 Work”。...由于本项目以后端为主,所以前端也只有这些东西: 后端 后端内容则比较多了,主要就是主角 Nest.js,以及非常多的模块: 下面例举几个觉得比较重要的模块来说说吧,当然下面都是一些代码片段,想了解更具体的实现...要使用 TypeORM,就需要在 AppModule 上添加这个配置,然而,明文写配置是个沙雕做法,更好的实现应该用 Nest.js 提供的 ConfigModule 来读取配置。...如果你对 Nest.js 也感兴趣,也想学一下它,不妨 Clone 一下的 nest-todo 这个项目,抄抄改改学一下吧。

3.2K30

做了一个Nest.js上手项目,很丑,但适合练手和收藏

前言 最近爱了上 Nest.js 这个框架,边学边做了一个 nest-todo 这个项目。...虽然 Nest.js 文档也齐全,但是如果你稍微做重一点的业务,它就有点顶不住了,很多东西都要 试。那这个时候 nest-todo 就可以站出来说:“不会就抄吧,肯定能 Work”。...由于本项目以后端为主,所以前端也只有这些东西: 后端 后端内容则比较多了,主要就是主角 Nest.js,以及非常多的模块: 下面例举几个觉得比较重要的模块来说说吧,当然下面都是一些代码片段,想了解更具体的实现...要使用 TypeORM,就需要在 AppModule 上添加这个配置,然而,明文写配置是个沙雕做法,更好的实现应该用 Nest.js 提供的 ConfigModule 来读取配置。...如果你对 Nest.js 也感兴趣,也想学一下它,不妨 Clone 一下的 nest-todo 这个项目,抄抄改改学一下吧。

4.6K40

Nest.js 从零到壹系列(五):使用管道、DTO 验证入参,摆脱 if-else 的恐惧

管道有两个类型: 转换:管道将输入数据转换为所需的数据输出; 验证:对输入数据进行验证,如果验证成功继续传递,验证失败则抛出异常; ValidationPipe 是 Nest.js 自带的三个开箱即用的管道之一...ValidationPipe 只接受一个并立即返回相同的,其行为类似于一个标识函数,标准代码如下: import { PipeTransform, Injectable, ArgumentMetadata...绑定管道 绑定管道非常简单,就和之前使用 Guards 那样,直接用修饰符绑定在 Controller 上,然后将 body 的类型指定 DTO 即可: // src/logical/user/user.controller.ts...(body); } } 4....从零到壹系列(一):项目创建&路由设置&模块● Nest.js 从零到壹系列(二):数据库的连接● Nest.js 从零到壹系列(三):使用 JWT 实现单点登录 ·END·

4K41

2024 年这 5 个 Node.js 后端框架最受欢迎!

而且,如果你想一,Express.js 本身就是可组合的。你可以在应用程序的任何地方插入并使用组件。...由于 Nest.js 具有模块结构,因此它易于维护。 2.可伸缩性 Nest.js 通过将应用程序拆分为可管理的模块,支持灵活的组件替换,并通过微服务和异步操作处理高流量,实现了无缝扩展。...import { Controller, Get, Post, Body } from '@nestjs/common'; import { PaymentService } from '....例如,如果我们将一个字符串发送到“value”参数,它将抛出一个错误。 Koa.js:优雅且轻量级 Koa.js 是一个更小、更富表现力的 Web 框架,也是由 Express.js 团队设计的。...4.输入验证 输入验证是 hapi.js 的另一个关键方面。在路由的选项对象中,我们可以定义需要验证哪些输入。默认验证对象包含以下

2.8K10

从零开始的 Nest.js

Nest.js 久有耳闻了,但是一直没有时间去真正学习他,一直鸽子到了现在。想借着学习 nest 的先进思想,来重构的博客后端。...Nest.js 是一个基于 Express.js 的渐进式 Web 框架,一提到 express 很多人就觉得性能太弱,不太适合使用,但是它的生态好,也正是这一点 Nest.js 选择了 Express.js...Nest.js 现已支持更快的 fastify 作为底层框架 准备 首先安装 nest-cli,前往官方阅读相关内容,不多赘述。 使用 nest new server建立一个 nest 项目。...路由 nest 中的路由是位于一个被Controller装饰的类中,每个路由是该类中的一个方法,该方法被Get``Post等装饰器装饰,而返回的则是响应对象。...比如: js 1// user.controller.ts 2@Post('/sign_up') 3 async register(@Body() userDto: UserDto) { 4 return

1.6K20

Next.jsNuxt.jsNest.jsFastify

)     } } export default MyDocumentNuxt.js:改写根目录下唯一的 App.html,会对所有页面路由生效,使用占位符的方式渲染资源和属性...Next.js:可以在页面路由文件中导出 getServerSideProps 方法,Next.js 会使用此函数返回的来渲染页面,返回会作为 props 传给页面路由组件:export async...会根据返回决定是否继续执行后续声明周期:// 声明时需要使用 @Injectable 装饰且实现 CanActivate 并返回 boolean  @Injectable() export class...转化:参数类型的转化,或者由原始参数求取二级参数,供 controllers 使用:我们再来简单的看下 Nest.js 对不同应用类型和不同 http 提供服务是怎样做适配的:不同应用类型:Nest.js...不同的 http 提供服务则是使用不同的适配器,Nest.js 的默认内核是 Express,但是官方提供了 FastifyAdapter 适配器用于切换到 Fastify。

3K10

Nest.js 从零到壹系列(一):项目创建&路由设置&模块

,然后新建项目,输入如下指令: $ npm i -g @nestjs/cli $ nest new project-name 输入完后,会初始化,此时,会问你使用哪一种方式来管理依赖包: ?...选择的是 yarn,主要是国内的 npm 下载得比较慢。如果没有 yarn 的,可以下载一个,也可以使用 npm,不过本系列教程都使用 yarn。...局部路由前缀 路由还可以设置局部和全局的前缀,使用前缀可以避免在所有路由共享通用前缀时出现冲突的情况。...() body: any) { return this.usersService.findOne(body.username); } } 需要先用构造器实例化,然后才能调用方法,这里使用的是...POST 来接收请求,通过 @Body() 来获取请求体(request.body)的参数。

4.8K51

Nest.js 从零到壹系列(七):讨厌写文档,Swagger UI 了解一下?

: number | string; } 接口标签分类 通过前面的截图可以看到,所有的接口都在 Default 栏目下,接口多了之后,就很不方便查找了。...Responses body 中的 token 复制出来,然后将页面拖到顶部,点击右上角那个带锁的按钮: 将 token 复制到弹窗的输入框,点击 Authorize,即可授权成功: 注意:这里显示的授权...示例参数 前面登录的时候,需要手动输入用户名、密码,那么有没有可能,事先写好,这样前端来看文档的时候,直接用默认账号登录就行了呢?...查看文档,只需访问链接即可,不用再传来传去了,你好好大家好。...从零到壹系列(二):数据库的连接● Nest.js 从零到壹系列(四):使用中间件、拦截器、过滤器打造日志系统● Nest.js 从零到壹系列(六):用 15 行代码实现 RBAC 0 ·END·

4.4K10

看看 Nest.js 怎么用的

如果不知道怎么用的话,不妨来看下 Nest.js 是怎么用的吧: 案例 1 Nest.js 除了支持跑一个单独的 http 服务之外,还支持微服务,微服务一般就不是直接处理 http 了,可能是和 Redis...各种不同中间件的客户端连接方式不同,而 Nest.js 希望把它们统一管理起来。 怎么统一管理呢?...Transport 是一个这样的枚举: 这就是策略模式 + 工厂模式的应用。策略模式定义统一的结构来管理各种策略,工厂模式根据参数创建某个具体的实例。 有的同学可能会问了,这样写好处在哪里呢?...于是它定义了个 HttpServer 的接口,里面定义了 http 服务器应该有的所有方法: 然后又提供了个抽象类 AbstractHttpAdapter,对 HttpServer 的一些方法做了默认实现...比如它还提供了另一个实现,基于 Fastify: 这样之后切换别的 http 的实现就很容易了,并没有和 Express 强耦合。 这又是一个真实的设计模式的应用。

1.4K40
领券