在NestJS中,创建带参数的嵌套路由涉及几个步骤,主要是定义在控制器中的路由装饰器。以下是创建带参数的嵌套路由的步骤示例:
- 定义父模块路由:首先创建父模块的控制器,并使用
@Controller
装饰器定义父路由。
typescriptimport { Controller, Get } from '@nestjs/common'; @Controller('parent') export class ParentController { @Get() getAllParents() { return '所有父模块数据'; } }
- 定义子模块路由:创建子模块的控制器,并在子控制器里定义路由,使用
@Controller
装饰器指定子路由路径。
typescriptimport { Controller, Get, Param } from '@nestjs/common'; @Controller('children') export class ChildrenController { @Get() getAllChildren() { return '所有子模块数据'; } @Get(':id') getChildById(@Param('id') id: string) { return `子模块数据 ${id}`; } }
- 创建嵌套路由:在父模块控制器中嵌套子模块控制器,可以使用路由路径前缀完成嵌套。
typescriptimport { 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 回复