如何使用 typed-rest-client 进行 REST API 调用
作者:kongxx
typed-rest-client是专为Node.js设计的库,用于以类型安全的方式与RESTful API进行交互,用户可以方便地访问和处理API返回的数据,此外,还需要定义相应的接口来描述API返回的数据结构,确保类型安全,感兴趣的朋友跟随小编一起看看吧
typed-rest-client
是一个用于 Node.js 的库,它提供了一种类型安全的方式来与 RESTful API 进行交互。其主要功能包括:
安装 typed-rest-client
要使用 typed-rest-client
,首先需要安装它,可以通过 npm 来安装:
$ npm install typed-rest-client
使用 typed-rest-client
这里假定有个 express 的 server 提供了两个 REST API,一个是获取用户列表,一个是获取用户信息。
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}`); });
下面是测试程序
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();
这里首先定义了一个 interface,描述了 REST API 返回使用的数据结构。
- 调用
RestClient
的get
方法,传入 URL 和返回的数据类型,返回一个IRestResponse
对象,IRestResponse
对象包含了 HTTP 响应的状态码、响应头和响应体。 - 通过
statusCode
属性可以获取到 HTTP 响应的状态码。 - 通过
headers
属性可以获取到 HTTP 响应头。 - 通过
result
属性可以获取到响应体中的数据。
测试
首先启动express server。
$ npm run dev
运行测试程序
$ 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
到此这篇关于如何使用 typed-rest-client 进行 REST API 调用的文章就介绍到这了,更多相关typed-rest-client REST API 调用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!