当前位置: 首页 > 知识库问答 >
问题:

如何使用 NestJS 创建具有参数的嵌套路由

荀振国
2023-03-14

我需要构建一个API,其中大多数路由都以一个公共URL部分为前缀,该部分也有一个参数。

在我的具体案例中,我的路线需要如下所示:

< code >/accounts/:account/resource 1/:some param

< code >/accounts/:account/resource 2/:some param/whatever

< code >/accounts/:account/resource 3/

/accounts/:account/resource4/subResource/

等等。

因此,理想情况下,我会创建一个父路由/accounts/:account/,它将包含子路由(resource1resource2resource3resource4等)。

我还需要:account参数可以从所有子路由访问。

使用NestJS实现这一目标的最佳方式是什么?

共有3个答案

张心水
2023-03-14

父控制器 :

@Controller('accounts')
export class AccountsController {
  // http://api.domaine.com/accounts
  @Get()

儿童控制器 :

@Controller('accounts/:id')
export class ResourcesController {
  // http://api.domaine.com/accounts/1/resources
  @Get('resources')
池赞
2023-03-14

关于您的使用案例,您可能想看看这个路由器模块
=

根据本模块的文档,您可以像这样定义您的路线:

... //imports
const routes: Routes = [
    {
      path: '/ninja',
      module: NinjaModule,
      children: [
        {
          path: '/cats',
          module: CatsModule,
        },
        {
          path: '/dogs',
          module: DogsModule,
        },
      ],
    },
  ];

@Module({
  imports: [
      RouterModule.forRoutes(routes), // setup the routes
      CatsModule,
      DogsModule,
      NinjaModule
      ], // as usual, nothing new
})
export class ApplicationModule {}

当然,路由将在单独的文件中定义,如路由.ts

假设您有一个按模块划分的控制器,前面的代码将以下面的路由树结束:

ninja
    ├── /
    ├── /katana
    ├── cats
    │   ├── /
    │   └── /ketty
    ├── dogs
        ├── /
        └── /puppy

示例:如果您想要到达< code>ketty控制器的路由,您将需要到达此endpoint:< br>

更新:如果您使用的是NestJsv8.0.0或更高版本,这种方法现在已经过时,正如nest router的文档告诉我们的,它现在包含在@NestJs/core

此外,正如@yehonatan yehezkel所指出的,您可以在此处按照推荐方法的文档进行操作https://docs.nestjs.com/recipes/router-module

孙京
2023-03-14

我想你需要这个?

import {Controller, Get, Param} from "@nestjs/common";

@Controller('accounts/:account')
export class TestController{

    @Get('resource2/:someParam/whatever')
    arsPW(@Param('account') account, @Param('someParam') someparam){
        console.log(':account/resource2/:someParam/whatever',account,someparam)
        return account+'_'+someparam+'___';
    }

    @Get('resource1/:someparam')
    aRSP(@Param('account') account, @Param('someparam') someparam){
        console.log(':account/resource1/:someParam',account,someparam)
        return account+'_'+someparam;
    }


    @Get()
    getget(){
        console.log('get');
        return 'aaa';
    }

}
 类似资料:
  • 问题内容: 我正在尝试创建一个,但是在方法中添加一些错误。 请帮助我如何添加参数以及如何将其传递给在其中声明a和的另一个函数。 我的另一个功能是insertData(…) 我正在尝试创建一个并将其传递给函数。但是,当我在第一个函数中调用方法时,它将引发错误。 错误是 你调用的对象是空的 问题答案: 如果不调用其构造函数(新),则不能使用任何变量(例如,参考对象),但是不能使用新变量直接对其进行初始

  • 对于react应用程序,我有以下嵌套路由/组件的基本结构:

  • 关于这个问题,我做了很多研究,还没有找到正确或具体的答案,所以我在这里提出这个问题,然后就开始讨论Spring MVC项目。 我的应用程序是用Spring MVC(带Spring boot)构建的,后端是AngularJS 1。前端是x。我还激活了HTML5模式(所以,没有使用,只是简单的url,比如http://podcast.dk.lan/podcasts/123/items/456/play

  • 问题内容: 我需要从查询创建一个JSON输出,该查询使用具有一对多关系的两个表之间的内部联接。 我希望将辅助表的值作为主表的数组属性嵌套。 考虑以下示例: 并查询: 这将打印以下JSON: 但是,我希望将pets数据作为所有者数据中的数组存储: 我怎样才能做到这一点? 问题答案: 您可以使用以下查询:

  • 我正在创建一个我想经常重用的AnyLogic代理。在许多AnyLogic代理和组件中,有一些空间可以输入代码,如“on receive”、“Action”或“function body”。在构建模型时,这些将被编译到代理中。普通程序员是如何做到这一点的? 例如,假设我有这个代理(显然是伪代码): 客户端可能会使用它如下: 这可能吗?

  • 问题内容: 我正在尝试从Go可执行文件(例如’dir1 / dir2 / dir3’)创建一组嵌套目录。我已成功创建以下一行的目录: 但是,我不知道如何在该目录内创建预定的嵌套目录集。 问题答案: 用于创建单个目录。要创建文件夹路径,请尝试使用: 转到文档 func MkdirAll(路径字符串,烫发FileMode)错误 MkdirAll创建一个名为path的目录以及所有必要的父目录,并返回ni