如何使用 typed-rest-client 进行 REST API 调用

 更新时间:2024年09月24日 11:33:39   作者: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 返回使用的数据结构。

  • 调用 RestClientget 方法,传入 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 调用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

最新评论