Nest.js Controller路由和请求处理强大功能解析
Controller
Controller 它 主要是负责 特定路由请求处理并将响应结果返回给客户端。
每个控制器 它会有多个路由,不同路由对应不同的业务请求处理。
在 Nest 中, 创建一个 控制器,应该使用类 和 装饰器 , 装饰器会使类相关联的数据的关联起来,将请求绑定到相应的控制器。
可以使用Nest-cli 提供的指令 快速创建一个 CURD
nest g resource [name]
路由
@Controller 是 Nest 的基本控制器,通过修饰器 @Controller 可以将路由分组,模块化进行路由的管理,并最大限度的减少了代码重复性。
路由的 形成 :
控制器装饰器前缀@Controller('user') +
请求方法装饰器结合 @Get('getDeatil')
将形成路由映射user/getDeatail
如何进行路由分组呢?
@Controller 接受一个参数,这可参数可选,默认如果不传, 就是 /
@Controller(分组名)
import { Controller, Get, Param, Post } from '@nestjs/common'; import { UserService } from '../service/index'; const result: Object = { code: 200, data: { str: '微信公众号:前端自学社区', arrList: [1, 2, 3, 4], }, }; @Controller('user') export class UserController { // 使用依赖注入的方式注入一个类 constructor(private readonly userService: UserService) {} @Get('getUserInfo') // 定义http的请求方式为get请求 getUserInfo(): object { // 函数名可以随便定义 return this.userService.getUserInfo(result); // 控制层调用服务层的getHello()方法 } }
通过 访问 http://localhost:3000/user/getUserInfo 就可以访问到响应数据。
@Controller 装饰器 修饰 类,该类就拥有和装饰器关联的属性和功能,传递了一个参数 user , 说明当前路由分组名称为 user , 当前类下的所有基准路由都是 /user/ 开头了。
通过 HTTP 请求方法装饰器 修饰方法,它会方法告诉 Nest 为 HTTP 请求的特定端点创建处理程序。
栗子中,getUserInfo 方法被 @Get 所修饰,所以它是一个 Get 请求。
请求参数装饰器
通过对客户端发起的请求参数做解析处理,Nest 提供的访问请求对象 默认方式为 express .
@Get('getQueryUser:id') getQueryUser(@Param() params) { return this.userService.getQueryUser(params); }
Nest 为所有标准 HTTP 方法提供装饰器:
@Get(), ;@Post(), @Put(), @Delete(), @Patch(), @Options(), 和 @Head(). 此外, @All()定义处理所有这些的端点。
路由通配符
支持基于模式的路由。 例如,星号用作通配符,将匹配任何字符组合。
@Get('ab*cd') findAll() { return 'This route uses a wildcard'; }
'ab*cd'路由路径将匹配 abcd, ab_cd, abecd, 等等
请求状态码
响应状态码默认为 200 , POST 为 201 , 我们可以通过添加 @HttpCode(...)处理程序级别的装饰器。 指定请求 Code
@Post() @HttpCode(204) create() { return 'This action adds a new cat'; }
自定义响应头
可以通过使用 @Header()装饰器或特定于库的响应对象(并调用 res.header()直接地)。
@Post() @Header('Cache-Control', 'none') create() { return 'This action adds a new cat'; }
重定向
响应重定向到特定 URL,响应重定向到特定 URL 来重定向,@Redirect()需要两个参数, url和 statusCode,两者都是可选的。 默认值为 statusCode是 302 ( Found) 如果省略。
@Get('docs') @Redirect('https://docs.nestjs.com', 302) getDocs(@Query('version') version) { if (version && version === '5') { return { url: 'https://docs.nestjs.com/v5/' }; }
路由参数
当获取某个文章或数据时,需要动态传递id,那么我们可以使用 Get 请求,或拼接动态 id 来获取,在Nest 中,可以使用 @Param()装饰器,
它用于修饰方法参数,我们可以通过 params 获取请求动态id .
两种写法:
@Get(':id') findOne(@Param() params): string { console.log(params.id); return `This action returns a #${params.id} cat`; } @Get(':id') findOne(@Param('id') id: string): string { return `This action returns a #${id} cat`; }
以上就是Nest.js Controller路由和请求处理强大功能解析的详细内容,更多关于Nest.js Controller路由请求处理的资料请关注脚本之家其它相关文章!
相关文章
npm使用淘宝镜像安装时报错的解决方案(npm淘宝镜像到期尽快切换)
npm 淘宝镜像到期了,尽快切换,本文给大家介绍了npm使用淘宝镜像安装时报错的解决方案,文中通过代码示例和图文讲解的非常详细,具有一定的参考价值,需要的朋友可以参考下2024-02-02如何使用nvm实现nodejs版本管理(版本删除,版本切换及版本添加)
这篇文章主要给大家介绍了关于如何使用nvm实现nodejs版本管理(版本删除,版本切换及版本添加)的相关资料,nvm是一个node版本管理工具,通过它可以安装多种node版本并且可以快速、简单的切换node版本,需要的朋友可以参考下2023-10-10Nodejs下用submit提交表单提示cannot post错误的解决方法
这篇文章主要介绍了Nodejs下用submit提交表单提示cannot post错误的解决方法,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧2016-11-11如何解决安装websocket还是报错Cannot find module'ws&apos
这篇文章主要介绍了如何解决安装websocket还是报Cannot find module'ws'问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-02-02Node.js 连接 MySql 统计组件属性的使用情况解析
这篇文章主要为大家介绍了Node.js 连接 MySql 统计组件属性的使用情况解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-10-10
最新评论