如何使用 typed-rest-client 进行 REST 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 调用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
用 Javascript 验证表单(form)中多选框(checkbox)值
和单选框一样,许多新手在用 Javascript 验证表单(form)中多选框(checkbox)的值时,都会遇到问题,原因是 checkbox 和普通的文本框在获取值的时候有很大不同2009-09-09
最新评论