Nest.js Controller路由和請求處理強大功能解析
Controller
Controller 它 主要是負責 特定路由請求處理并將響應結果返回給客戶端。
每個控制器 它會有多個路由,不同路由對應不同的業(yè)務請求處理。
在 Nest 中, 創(chuàng)建一個 控制器,應該使用類 和 裝飾器 , 裝飾器會使類相關聯(lián)的數(shù)據(jù)的關聯(lián)起來,將請求綁定到相應的控制器。
可以使用Nest-cli 提供的指令 快速創(chuàng)建一個 CURD
nest g resource [name]
路由
@Controller 是 Nest 的基本控制器,通過修飾器 @Controller 可以將路由分組,模塊化進行路由的管理,并最大限度的減少了代碼重復性。
路由的 形成 :
控制器裝飾器前綴@Controller('user') +
請求方法裝飾器結合 @Get('getDeatil')
將形成路由映射user/getDeatail
如何進行路由分組呢?
@Controller 接受一個參數(shù),這可參數(shù)可選,默認如果不傳, 就是 /
@Controller(分組名)
import { Controller, Get, Param, Post } from '@nestjs/common'; import { UserService } from '../service/index'; const result: Object = { code: 200, data: { str: '微信公眾號:前端自學社區(qū)', arrList: [1, 2, 3, 4], }, }; @Controller('user') export class UserController { // 使用依賴注入的方式注入一個類 constructor(private readonly userService: UserService) {} @Get('getUserInfo') // 定義http的請求方式為get請求 getUserInfo(): object { // 函數(shù)名可以隨便定義 return this.userService.getUserInfo(result); // 控制層調用服務層的getHello()方法 } }
通過 訪問 http://localhost:3000/user/getUserInfo 就可以訪問到響應數(shù)據(jù)。
@Controller 裝飾器 修飾 類,該類就擁有和裝飾器關聯(lián)的屬性和功能,傳遞了一個參數(shù) user , 說明當前路由分組名稱為 user , 當前類下的所有基準路由都是 /user/ 開頭了。
通過 HTTP 請求方法裝飾器 修飾方法,它會方法告訴 Nest 為 HTTP 請求的特定端點創(chuàng)建處理程序。
栗子中,getUserInfo 方法被 @Get 所修飾,所以它是一個 Get 請求。
請求參數(shù)裝飾器
通過對客戶端發(fā)起的請求參數(shù)做解析處理,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, 等等
請求狀態(tài)碼
響應狀態(tài)碼默認為 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()需要兩個參數(shù), 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/' }; }
路由參數(shù)
當獲取某個文章或數(shù)據(jù)時,需要動態(tài)傳遞id,那么我們可以使用 Get 請求,或拼接動態(tài) id 來獲取,在Nest 中,可以使用 @Param()裝飾器,
它用于修飾方法參數(shù),我們可以通過 params 獲取請求動態(tài)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路由和請求處理強大功能解析的詳細內(nèi)容,更多關于Nest.js Controller路由請求處理的資料請關注腳本之家其它相關文章!
相關文章
Node在Controller層進行數(shù)據(jù)校驗的過程詳解
這篇文章主要給大家介紹了關于Node在Controller層進行數(shù)據(jù)校驗的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08Node.js中的npm單獨與批量升級依賴包的方式超詳細講解
npm outdated僅檢查所有已安裝包的依賴關系,并將當前版本遠程倉庫中的最新版本進行對比,不會升級,這篇文章主要介紹了Node.js中的npm單獨與批量升級依賴包的方式超詳細講解,需要的朋友可以參考下2024-02-02Node.js + express實現(xiàn)上傳大文件的方法分析【圖片、文本文件】
這篇文章主要介紹了Node.js + express實現(xiàn)上傳大文件的方法,結合實例形式分析了Node.js + express針對圖片、文本文件上傳操作實現(xiàn)方法及相關操作注意事項,需要的朋友可以參考下2019-03-03node.js中 mysql 增刪改查操作及async,await處理實例分析
這篇文章主要介紹了node.js中 mysql 增刪改查操作及async,await處理,結合實例形式分析了node.js中 mysql庫安裝、增刪改查操作及async,await處理相關實現(xiàn)技巧,需要的朋友可以參考下2020-02-02