Nest.js Controller路由和请求处理强大功能解析

 更新时间:2023年12月06日 09:55:03   作者:程序员HaiJun  
这篇文章主要为大家,介绍了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路由请求处理的资料请关注脚本之家其它相关文章!

相关文章

  • 详解利用nodejs对本地json文件进行增删改查

    详解利用nodejs对本地json文件进行增删改查

    这篇文章主要介绍了详解利用nodejs对本地json文件进行增删改查,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Node在Controller层进行数据校验的过程详解

    Node在Controller层进行数据校验的过程详解

    这篇文章主要给大家介绍了关于Node在Controller层进行数据校验的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Node.js中的npm单独与批量升级依赖包的方式超详细讲解

    Node.js中的npm单独与批量升级依赖包的方式超详细讲解

    npm outdated仅检查所有已安装包的依赖关系,并将当前版本远程仓库中的最新版本进行对比,不会升级,这篇文章主要介绍了Node.js中的npm单独与批量升级依赖包的方式超详细讲解,需要的朋友可以参考下
    2024-02-02
  • Node.js 使用jade模板引擎的示例

    Node.js 使用jade模板引擎的示例

    本篇文章主要介绍了Node.js 使用jade模板引擎的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Node.js + express实现上传大文件的方法分析【图片、文本文件】

    Node.js + express实现上传大文件的方法分析【图片、文本文件】

    这篇文章主要介绍了Node.js + express实现上传大文件的方法,结合实例形式分析了Node.js + express针对图片、文本文件上传操作实现方法及相关操作注意事项,需要的朋友可以参考下
    2019-03-03
  • nodeJs爬虫的技术点总结

    nodeJs爬虫的技术点总结

    本篇文章给大家总结了关于nodeJs爬虫的技术点的相关知识,对爬虫有兴趣的朋友可以跟着学习参考下。
    2018-05-05
  • node.js中 mysql 增删改查操作及async,await处理实例分析

    node.js中 mysql 增删改查操作及async,await处理实例分析

    这篇文章主要介绍了node.js中 mysql 增删改查操作及async,await处理,结合实例形式分析了node.js中 mysql库安装、增删改查操作及async,await处理相关实现技巧,需要的朋友可以参考下
    2020-02-02
  • node.js实现学生档案管理

    node.js实现学生档案管理

    这篇文章主要为大家详细介绍了node.js实现学生档案管理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 详解redis在nodejs中的应用

    详解redis在nodejs中的应用

    本篇文章给大家详细分析了redis在nodejs中的应,对此知识点有兴趣的朋友可以跟着学习下。
    2018-05-05
  • 快速使用node.js进行web开发详解

    快速使用node.js进行web开发详解

    本篇文章主要介绍了快速使用node.js进行web开发详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04

最新评论