欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

NestJS裝飾器實現(xiàn)GET請求

 更新時間:2024年10月27日 11:47:27   作者:不叫貓先生  
本文介紹了如何通過裝飾器實現(xiàn)GET請求,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

裝飾器實現(xiàn)GET請求

定義一個裝飾器 Get,用于在 Controller 類中裝飾 getList 方法,以便從指定的 url 發(fā)起一個 GET 請求。然后根據(jù)請求的結果調用 getList 方法,并將響應數(shù)據(jù)或錯誤信息傳遞給它。

Get裝飾器

其中Get接收一個 url 字符串作為參數(shù),返回一個裝飾器函數(shù),該函數(shù)接收 target(類的原型對象)、key(方法名)、和 descriptor(方法的描述符)。

使用 Axios 發(fā)起 GET 請求,如果請求成功,則調用 fnc(即 getList)并傳入響應數(shù)據(jù)和一個狀態(tài)對象;如果請求失敗,則也調用 fnc,并傳入錯誤信息和狀態(tài)對象。

import axios from "axios";
const Get = (url: string) => {
	return (target: Object, key: any, descriptor: PropertyDescriptor) => {
		console.log(key,descriptor)
		const fnc = descriptor.value;//將原方法 fnc 存儲在變量中。
		axios.get(url).then(res => {
			fnc(res, {
				status: 200,
				success: true
			})
		}).catch(e => {
			fnc(e, {
				status: 500,
				success: false
			})
		})
	}
}

Controller類

包含一個構造函數(shù)和一個被裝飾的方法 getList。getList 方法在接收到數(shù)據(jù)后可以進行相應的處理,例如輸出數(shù)據(jù)到控制臺。

class Controller {
	constructor() { }
	@Get("https://maqib.cn/_next/data/NLsSYPIRJyj1wLXgylj6N/blog.json")
	getList(res: any, status: string) {
		// console.log(res.data)
	}
}

優(yōu)化上面代碼

import axios from "axios";

const Get = (url: string) => {
	return (target: Object, key: string | symbol, descriptor: PropertyDescriptor) => {
		const originalMethod = descriptor.value;

		descriptor.value = async function (...args: any[]) {
			try {
				const res = await axios.get(url);
				// 調用原始方法并傳遞結果和狀態(tài)
				return originalMethod.apply(this, [res, { status: 200, success: true }, ...args]);
			} catch (e) {
				// 處理錯誤情況
				return originalMethod.apply(this, [e, { status: 500, success: false }, ...args]);
			}
		};
	};
}

class Controller {
	constructor() {}

	@Get("https://maqib.cn/_next/data/NLsSYPIRJyj1wLXgylj6N/blog.json")
	async getList(res?:any, status?: { status: number; success: boolean }) {
		if (status?.success) {
			console.log(res.data); // 正常響應
		} else {
			console.error('Error:', res); // 錯誤處理
		}
	}
}

// 測試控制器
const controller = new Controller();
controller.getList(); // 調用 getList 方法

到此這篇關于NestJS裝飾器實現(xiàn)GET請求的文章就介紹到這了,更多相關NestJS GET請求內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • TypeScript中條件類型精讀與實踐記錄

    TypeScript中條件類型精讀與實踐記錄

    這篇文章主要給大家介紹了關于TypeScript中條件類型精讀與實踐的相關資料,,條件類型就是在初始狀態(tài)并不直接確定具體類型,而是通過一定的類型運算得到最終的變量類型,需要的朋友可以參考下
    2021-10-10
  • JavaScript中的常見繼承總結

    JavaScript中的常見繼承總結

    這篇文章主要介紹了JavaScript中的常見繼承總結,繼承其實就是構造函數(shù)和構造函數(shù)之間的一種關系,更多相關介紹,需要的小伙伴可以參考下面文章內容
    2022-09-09
  • express+mockjs實現(xiàn)模擬后臺數(shù)據(jù)發(fā)送功能

    express+mockjs實現(xiàn)模擬后臺數(shù)據(jù)發(fā)送功能

    這篇文章主要介紹了express+mockjs實現(xiàn)模擬后臺數(shù)據(jù)發(fā)送功能,需要的朋友可以參考下
    2018-01-01
  • 原生JS實現(xiàn)日歷組件的示例代碼

    原生JS實現(xiàn)日歷組件的示例代碼

    本篇文章主要介紹了原生JS實現(xiàn)日歷組件的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 基于Javascript實現(xiàn)彈出頁面效果

    基于Javascript實現(xiàn)彈出頁面效果

    彈出層效果是一個很實用的功能,很多網(wǎng)站都采用了這種方式實現(xiàn)登錄和注冊,下面小編通過本文給大家分享具體實現(xiàn)代碼,對js彈出頁面效果相關知識感興趣的朋友一起學習吧
    2016-01-01
  • 如何理解JavaScript模塊化

    如何理解JavaScript模塊化

    模塊化簡單來說就是將一個完整的長篇代碼文件根據(jù)功能進行劃分成幾個文件,這些文件各自負責一個獨立的功能,各個文件組合起來實現(xiàn)一個完整的大功能,這就是模塊化,每個負責獨立功能的文件就是模塊。
    2021-05-05
  • 嘗試動手制作javascript放大鏡效果

    嘗試動手制作javascript放大鏡效果

    這篇文章主要介紹了javascript放大鏡效果,照著別人的例子,自己試著做了個放大鏡效果,感興趣的小伙伴們可以參考一下
    2015-12-12
  • 微信小程序實現(xiàn)登錄遮罩效果

    微信小程序實現(xiàn)登錄遮罩效果

    這篇文章主要為大家詳細介紹了微信小程序實現(xiàn)登錄遮罩效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 基于element-ui組件手動實現(xiàn)單選和上傳功能

    基于element-ui組件手動實現(xiàn)單選和上傳功能

    在用戶使用過程中提出一鍵導入的功能,需求如下:點擊導入按鈕顯示提示框,然后是單選框以及上傳按鈕。這篇文章主要介紹了基于element-ui組件手動實現(xiàn)單選和上傳功能,需要的朋友可以參考下
    2018-12-12
  • JS實現(xiàn)超簡單的鼠標拖動效果

    JS實現(xiàn)超簡單的鼠標拖動效果

    這篇文章主要介紹了JS實現(xiàn)超簡單的鼠標拖動效果,涉及JavaScript響應鼠標事件動態(tài)操作頁面元素的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11

最新評論