如何使用?typed-rest-client?進(jìn)行?REST?API?調(diào)用
typed-rest-client
是一個(gè)用于 Node.js 的庫(kù),它提供了一種類(lèi)型安全的方式來(lái)與 RESTful API 進(jìn)行交互。其主要功能包括:
安裝 typed-rest-client
要使用 typed-rest-client
,首先需要安裝它,可以通過(guò) npm 來(lái)安裝:
$ npm install typed-rest-client
使用 typed-rest-client
這里假定有個(gè) express 的 server 提供了兩個(gè) REST API,一個(gè)是獲取用戶(hù)列表,一個(gè)是獲取用戶(hù)信息。
index.ts
import express, { Express, Request, Response } from "express"; const app: Express = express(); const port = process.env.PORT || 3000; app.get("/", (req: Request, res: Response) => { res.send("Express + TypeScript Server"); }); app.get("/users", (req: Request, res: Response) => { const users = [ { name: 'kongxx', password: 'password', email: 'kongxx@example.com' }, { name: 'Mandy', password: 'password', email: 'mandy@example.com' } ] res.json(users); }); app.get("/users/:id", (req: Request, res: Response) => { const user = { name: 'kongxx', password: 'password', email: 'kongxx@example.com' } res.json(user); }); app.listen(port, () => { console.log(`[server]: Server is running at http://localhost:${port}`); });
下面是測(cè)試程序
test.ts
import {RestClient, IRestResponse} from 'typed-rest-client/RestClient'; interface User { name: string; password: string; email: string; } async function test() { const rc: RestClient = new RestClient('test', 'http://localhost:3000'); const resUsers: IRestResponse<User[]> = await rc.get<User[]>('/users'); console.log('get users ...'); console.log('response: ', resUsers); console.log('statusCode: ', resUsers.statusCode); console.log('name: ', resUsers.result[0]?.name); console.log('email: ', resUsers.result[0]?.email); const resUser: IRestResponse<User> = await rc.get<User>('/users/1'); console.log('get user ...'); console.log('response: ', resUser); console.log('statusCode: ', resUser.statusCode); console.log('name: ', resUser.result?.name); console.log('email: ', resUser.result?.email); } test();
這里首先定義了一個(gè) interface,描述了 REST API 返回使用的數(shù)據(jù)結(jié)構(gòu)。
- 調(diào)用
RestClient
的get
方法,傳入 URL 和返回的數(shù)據(jù)類(lèi)型,返回一個(gè)IRestResponse
對(duì)象,IRestResponse
對(duì)象包含了 HTTP 響應(yīng)的狀態(tài)碼、響應(yīng)頭和響應(yīng)體。 - 通過(guò)
statusCode
屬性可以獲取到 HTTP 響應(yīng)的狀態(tài)碼。 - 通過(guò)
headers
屬性可以獲取到 HTTP 響應(yīng)頭。 - 通過(guò)
result
屬性可以獲取到響應(yīng)體中的數(shù)據(jù)。
測(cè)試
首先啟動(dòng)express server。
$ npm run dev
運(yùn)行測(cè)試程序
$ npm install -g typescript $ tsc src/test.ts && node src/test.js get users ... response: { statusCode: 200, result: [ { name: 'kongxx', password: 'password', email: 'kongxx@example.com' }, { name: 'Mandy', password: 'password', email: 'mandy@example.com' } ], headers: { 'x-powered-by': 'Express', 'content-type': 'application/json; charset=utf-8', 'content-length': '137', etag: 'W/"89-50ejbxheoPkdk58Nm75VjrVs3YE"', date: 'Mon, 23 Sep 2024 01:01:04 GMT', connection: 'close' } } statusCode: 200 name: kongxx email: kongxx@example.com get user ... response: { statusCode: 200, result: { name: 'kongxx', password: 'password', email: 'kongxx@example.com' }, headers: { 'x-powered-by': 'Express', 'content-type': 'application/json; charset=utf-8', 'content-length': '68', etag: 'W/"44-WML8FV1wUhoW//8kQuCB8B/FWaQ"', date: 'Mon, 23 Sep 2024 01:01:04 GMT', connection: 'close' } } statusCode: 200 name: kongxx email: kongxx@example.com
到此這篇關(guān)于如何使用 typed-rest-client 進(jìn)行 REST API 調(diào)用的文章就介紹到這了,更多相關(guān)typed-rest-client REST API 調(diào)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
javascript下兼容firefox選取textarea文本的代碼
兼容firefox和ie的選取textarea文本的方法2008-06-06javascript 動(dòng)態(tài)設(shè)置已知select的option的value值的代碼
當(dāng)已經(jīng)知道某個(gè)select options的值,判斷當(dāng)前select的options的值是否與已知的值相同,相同也設(shè)置下。一般用戶(hù)修改頁(yè)面。2009-12-12用 Javascript 驗(yàn)證表單(form)中的單選(radio)值
在用 Javascript 驗(yàn)證表單(form)中的單選框(radio)是否選中時(shí),很多新手都會(huì)遇到問(wèn)題,原因是 radio 和普通的文本框在獲取值的時(shí)候有很大不同.2009-09-09通過(guò)隱藏option實(shí)現(xiàn)select的聯(lián)動(dòng)效果
開(kāi)始的時(shí)候需求是根據(jù)一定條件隱藏一部分<option>標(biāo)簽,類(lèi)似聯(lián)動(dòng)效果,但是目前的html規(guī)范并沒(méi)有為<option>提供隱藏的效果,因此常用的設(shè)置display或者visibility無(wú)效。2009-11-11