第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

如何使用 NestJS 將路由前綴添加到特定模塊?

如何使用 NestJS 將路由前綴添加到特定模塊?

慕哥6287543 2023-08-10 10:58:16
我想在模塊級別添加路由前綴和/或一般具有復(fù)雜的全局路由前綴邏輯。我知道我可以使用未記錄的函數(shù)NestApplication.setGlobalPrefix來設(shè)置單個(gè)全局前綴:// main.tsapp.setGlobalPrefix(version);但是,在這種情況下,我想在模塊級別設(shè)置前綴??磥砦铱梢酝ㄟ^在控制器級別的裝飾器中設(shè)置我想要的前綴來實(shí)現(xiàn)這一點(diǎn)://controler.ts@Get('/PREFIX/health')async getHealth() {  // TODO: implement  return {};}但這似乎相當(dāng)老套且容易出錯。當(dāng)然有更好的方法嗎?
查看完整描述

3 回答

?
達(dá)令說

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊

2021 年更新

NestJS 現(xiàn)在原生支持原始答案。

此外,當(dāng)主要功能是對 API 進(jìn)行版本控制時(shí), NestJS v8還添加了更復(fù)雜的路由:

@Controller({

? path: 'cats',

? version: '1', // ??

})

export class CatsController {

...

原答案

在 NestJS 中實(shí)現(xiàn)這一點(diǎn)的最可靠的方法是使用Nest-router包來創(chuàng)建路由樹。


yarn add nest-router

# or npm i nest-router

main.ts在名為的旁邊創(chuàng)建一個(gè)文件,routes.ts如下所示:


import { Routes } from 'nest-router';

import { YourModule } from './your/your.module';


export const routes: Routes = [

? {

? ? path: '/v1',

? ? module: YourModule,

? },

];

然后,在文件中,在加載任何其他模塊之前app.module.ts添加路由器:


@Module({

? imports: [

? ? RouterModule.forRoutes(routes),

? ? YourModule,

? ? DebugModule

? ],


})

現(xiàn)在,當(dāng)您導(dǎo)航到控制器時(shí),在本例中YourModule,其所有路由都將以 例如 為前綴:v1


curl http://localhost:3000/v1/your/operation

使用這種方法可以為您提供最大的靈活性,因?yàn)槊總€(gè)模塊不需要知道它的前綴如何;應(yīng)用程序可以在更高級別上做出決定。與依賴靜態(tài)字符串相比,幾乎更高級的前綴可以動態(tài)計(jì)算。


查看完整回答
反對 回復(fù) 2023-08-10
?
汪汪一只貓

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊

對我來說,僅僅為了實(shí)現(xiàn)這一點(diǎn)而添加第三方包有點(diǎn)不必要,更不用說它過時(shí)/不維護(hù)的風(fēng)險(xiǎn)了。您可以在類中添加自定義路由前綴Controller。


  @Controller('custom/prefix')

  export const MyController {


     @Get('health')

     getHealth() {

       //this route would be: custom/prefix/health

       return {};

     }


     @Get('other')

     getOther() {

       //this route would be: custom/prefix/other

       return {};

     }

  }

然后只需將此控制器添加到您的Module


查看完整回答
反對 回復(fù) 2023-08-10
?
梵蒂岡之花

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊

您現(xiàn)在可以使用 RouterModule 配置,也可以從全局前綴配置中排除某些路徑(或混合使用兩者):

路由器模塊: https://docs.nestjs.com/recipes/router-module#router-module

全局前綴“排除”: https ://docs.nestjs.com/faq/global-prefix#global-prefix


查看完整回答
反對 回復(fù) 2023-08-10
  • 3 回答
  • 0 關(guān)注
  • 386 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號