乐闻世界logo
搜索文章和话题

NestJS 如何创建带参数的嵌套路由?

8 个月前提问
6 个月前修改
浏览次数38

1个答案

1

在NestJS中,创建带参数的嵌套路由涉及几个步骤,主要是定义在控制器中的路由装饰器。以下是创建带参数的嵌套路由的步骤示例:

  1. 定义父模块路由:首先创建父模块的控制器,并使用@Controller装饰器定义父路由。
typescript
import { Controller, Get } from '@nestjs/common'; @Controller('parent') export class ParentController { @Get() getAllParents() { return '所有父模块数据'; } }
  1. 定义子模块路由:创建子模块的控制器,并在子控制器里定义路由,使用@Controller装饰器指定子路由路径。
typescript
import { Controller, Get, Param } from '@nestjs/common'; @Controller('children') export class ChildrenController { @Get() getAllChildren() { return '所有子模块数据'; } @Get(':id') getChildById(@Param('id') id: string) { return `子模块数据 ${id}`; } }
  1. 创建嵌套路由:在父模块控制器中嵌套子模块控制器,可以使用路由路径前缀完成嵌套。
typescript
import { Controller, Get, Param } from '@nestjs/common'; @Controller('parent/:parentId/children') export class ChildrenController { @Get() getChildrenByParent(@Param('parentId') parentId: string) { return `父模块 ${parentId} 的所有子模块数据`; } @Get(':childId') getChildByParent( @Param('parentId') parentId: string, @Param('childId') childId: string ) { return `父模块 ${parentId} 的子模块数据 ${childId}`; } }

在上面的代码中,我们定义了父模块parent下面的子模块children的嵌套路由,这样我们就可以通过类似/parent/123/children/456这样的路径来访问特定父模块下特定子模块的数据。其中123是父模块ID,而456是子模块ID。

以上步骤展示了在NestJS中如何创建带参数的嵌套路由。控制器中的路由参数通过@Param装饰器获取,使得路由具有动态和灵活的处理能力。这样的嵌套路由设计让我们能够按资源和关系来组织API端点,从而提高了代码的可读性和可维护性。

2024年6月29日 12:07 回复

你的答案