" />

亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Nest.js Controller路由和請(qǐng)求處理強(qiáng)大功能解析

 更新時(shí)間:2023年12月06日 09:55:03   作者:程序員HaiJun  
這篇文章主要為大家,介紹了Nest.js Controller路由和請(qǐng)求處理強(qiáng)大功能解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Controller

Controller  它 主要是負(fù)責(zé) 特定路由請(qǐng)求處理并將響應(yīng)結(jié)果返回給客戶端。

每個(gè)控制器 它會(huì)有多個(gè)路由,不同路由對(duì)應(yīng)不同的業(yè)務(wù)請(qǐng)求處理。

在 Nest  中, 創(chuàng)建一個(gè) 控制器,應(yīng)該使用類 和 裝飾器 , 裝飾器會(huì)使類相關(guān)聯(lián)的數(shù)據(jù)的關(guān)聯(lián)起來(lái),將請(qǐng)求綁定到相應(yīng)的控制器。

可以使用Nest-cli 提供的指令 快速創(chuàng)建一個(gè) CURD

nest g resource [name]

路由

@Controller  是 Nest 的基本控制器,通過(guò)修飾器 @Controller  可以將路由分組,模塊化進(jìn)行路由的管理,并最大限度的減少了代碼重復(fù)性。

路由的 形成 :

控制器裝飾器前綴@Controller('user')  +
請(qǐng)求方法裝飾器結(jié)合 @Get('getDeatil')

將形成路由映射user/getDeatail

如何進(jìn)行路由分組呢?

@Controller 接受一個(gè)參數(shù),這可參數(shù)可選,默認(rèn)如果不傳,  就是 /

@Controller(分組名)

import { Controller, Get, Param, Post } from '@nestjs/common';
import { UserService } from '../service/index';
const result: Object = {
  code: 200,
  data: {
    str: '微信公眾號(hào):前端自學(xué)社區(qū)',
    arrList: [1, 2, 3, 4],
  },
};
@Controller('user')
export class UserController {
  // 使用依賴注入的方式注入一個(gè)類
  constructor(private readonly userService: UserService) {}
  @Get('getUserInfo') // 定義http的請(qǐng)求方式為get請(qǐng)求
  getUserInfo(): object {
    // 函數(shù)名可以隨便定義
    return this.userService.getUserInfo(result); // 控制層調(diào)用服務(wù)層的getHello()方法
  }
}

通過(guò) 訪問(wèn) http://localhost:3000/user/getUserInfo  就可以訪問(wèn)到響應(yīng)數(shù)據(jù)。

@Controller 裝飾器 修飾 類,該類就擁有和裝飾器關(guān)聯(lián)的屬性和功能,傳遞了一個(gè)參數(shù)  user ,  說(shuō)明當(dāng)前路由分組名稱為 user , 當(dāng)前類下的所有基準(zhǔn)路由都是 /user/  開頭了。

通過(guò) HTTP 請(qǐng)求方法裝飾器  修飾方法,它會(huì)方法告訴 Nest 為 HTTP 請(qǐng)求的特定端點(diǎn)創(chuàng)建處理程序。

栗子中,getUserInfo  方法被 @Get 所修飾,所以它是一個(gè) Get 請(qǐng)求。

請(qǐng)求參數(shù)裝飾器

通過(guò)對(duì)客戶端發(fā)起的請(qǐng)求參數(shù)做解析處理,Nest 提供的訪問(wèn)請(qǐng)求對(duì)象 默認(rèn)方式為 express .

@Get('getQueryUser:id')
  getQueryUser(@Param() params) {
    return this.userService.getQueryUser(params);
  }

Nest 為所有標(biāo)準(zhǔn) HTTP 方法提供裝飾器:

@Get(),  ;@Post(),  @Put(),  @Delete(),  @Patch(),  @Options(), 和 @Head().  此外, @All()定義處理所有這些的端點(diǎn)。

路由通配符

支持基于模式的路由。  例如,星號(hào)用作通配符,將匹配任何字符組合。

@Get('ab*cd')
findAll() {
  return 'This route uses a wildcard';
}

'ab*cd'路由路徑將匹配 abcd,  ab_cd,  abecd, 等等

請(qǐng)求狀態(tài)碼

響應(yīng)狀態(tài)碼默認(rèn)為 200 , POST 為 201 , 我們可以通過(guò)添加 @HttpCode(...)處理程序級(jí)別的裝飾器。   指定請(qǐng)求 Code

@Post()
@HttpCode(204)
create() {
  return 'This action adds a new cat';
}

自定義響應(yīng)頭

可以通過(guò)使用 @Header()裝飾器或特定于庫(kù)的響應(yīng)對(duì)象(并調(diào)用 res.header()直接地)。

@Post()
@Header('Cache-Control', 'none')
create() {
  return 'This action adds a new cat';
}

重定向

響應(yīng)重定向到特定 URL,響應(yīng)重定向到特定 URL 來(lái)重定向,@Redirect()需要兩個(gè)參數(shù), url和 statusCode,兩者都是可選的。  默認(rèn)值為 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ù)

當(dāng)獲取某個(gè)文章或數(shù)據(jù)時(shí),需要?jiǎng)討B(tài)傳遞id,那么我們可以使用 Get 請(qǐng)求,或拼接動(dòng)態(tài) id 來(lái)獲取,在Nest  中,可以使用 @Param()裝飾器,

它用于修飾方法參數(shù),我們可以通過(guò) params  獲取請(qǐng)求動(dòng)態(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路由和請(qǐng)求處理強(qiáng)大功能解析的詳細(xì)內(nèi)容,更多關(guān)于Nest.js Controller路由請(qǐng)求處理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解利用nodejs對(duì)本地json文件進(jìn)行增刪改查

    詳解利用nodejs對(duì)本地json文件進(jìn)行增刪改查

    這篇文章主要介紹了詳解利用nodejs對(duì)本地json文件進(jìn)行增刪改查,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Node在Controller層進(jìn)行數(shù)據(jù)校驗(yàn)的過(guò)程詳解

    Node在Controller層進(jìn)行數(shù)據(jù)校驗(yàn)的過(guò)程詳解

    這篇文章主要給大家介紹了關(guān)于Node在Controller層進(jìn)行數(shù)據(jù)校驗(yàn)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Node.js中的npm單獨(dú)與批量升級(jí)依賴包的方式超詳細(xì)講解

    Node.js中的npm單獨(dú)與批量升級(jí)依賴包的方式超詳細(xì)講解

    npm outdated僅檢查所有已安裝包的依賴關(guān)系,并將當(dāng)前版本遠(yuǎn)程倉(cāng)庫(kù)中的最新版本進(jìn)行對(duì)比,不會(huì)升級(jí),這篇文章主要介紹了Node.js中的npm單獨(dú)與批量升級(jí)依賴包的方式超詳細(xì)講解,需要的朋友可以參考下
    2024-02-02
  • Node.js 使用jade模板引擎的示例

    Node.js 使用jade模板引擎的示例

    本篇文章主要介紹了Node.js 使用jade模板引擎的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Node.js + express實(shí)現(xiàn)上傳大文件的方法分析【圖片、文本文件】

    Node.js + express實(shí)現(xiàn)上傳大文件的方法分析【圖片、文本文件】

    這篇文章主要介紹了Node.js + express實(shí)現(xiàn)上傳大文件的方法,結(jié)合實(shí)例形式分析了Node.js + express針對(duì)圖片、文本文件上傳操作實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-03-03
  • nodeJs爬蟲的技術(shù)點(diǎn)總結(jié)

    nodeJs爬蟲的技術(shù)點(diǎn)總結(jié)

    本篇文章給大家總結(jié)了關(guān)于nodeJs爬蟲的技術(shù)點(diǎn)的相關(guān)知識(shí),對(duì)爬蟲有興趣的朋友可以跟著學(xué)習(xí)參考下。
    2018-05-05
  • node.js中 mysql 增刪改查操作及async,await處理實(shí)例分析

    node.js中 mysql 增刪改查操作及async,await處理實(shí)例分析

    這篇文章主要介紹了node.js中 mysql 增刪改查操作及async,await處理,結(jié)合實(shí)例形式分析了node.js中 mysql庫(kù)安裝、增刪改查操作及async,await處理相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2020-02-02
  • node.js實(shí)現(xiàn)學(xué)生檔案管理

    node.js實(shí)現(xiàn)學(xué)生檔案管理

    這篇文章主要為大家詳細(xì)介紹了node.js實(shí)現(xiàn)學(xué)生檔案管理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 詳解redis在nodejs中的應(yīng)用

    詳解redis在nodejs中的應(yīng)用

    本篇文章給大家詳細(xì)分析了redis在nodejs中的應(yīng),對(duì)此知識(shí)點(diǎn)有興趣的朋友可以跟著學(xué)習(xí)下。
    2018-05-05
  • 快速使用node.js進(jìn)行web開發(fā)詳解

    快速使用node.js進(jìn)行web開發(fā)詳解

    本篇文章主要介紹了快速使用node.js進(jìn)行web開發(fā)詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04

最新評(píng)論