#http-request #http #request #cli #cli-tool #http-api #api-request

app rede

CLI 工具,用于运行和配置在可读文件中定义的 HTTP 请求集合

2 个版本

0.1.1 2024 年 4 月 14 日
0.1.0 2024 年 4 月 13 日

#217 in HTTP 客户端

48 次每月下载

Apache-2.0 OR MIT

62KB
1.5K SLoC

Rede

Rust CI Crates.io Version

rede(加利亚斯语中的“网络”)是一个命令行工具,可以帮助运行一系列请求,以简化 REST API 的使用和测试。这个项目的主要灵感来自 Bruno 和他们的命令行工具。

这个项目背后的主要目标是有一个代表 HTTP 请求的文本文件集合,这些请求将由 rede 捕获并执行,从而便于共享和控制这些请求的版本。

Execution of rede

--verbose 选项看起来也很好

How verbose looks

安装

由于这个项目仍处于早期阶段,安装它的唯一方法是使用 cargo,因此您需要安装 Rust 并运行

cargo install rede

如何运行

rede 使用 TOML 架构的 DSL。关于 rede DSL 的所有文档仍在开发中,但获取几个狗事实的请求如下所示

[http]
method = "GET"
url = "https://dogapi.dog/api/v2/facts"

[headers]
Accept = "application/json"
User-Agent = "rede/v0.1.0"

[query_params]
limit = 2

您可以通过执行 rede example 命令来生成此请求。然后,一旦您有了像示例生成的有效请求,只需使用 rede 运行它即可

rede run <your_file>

接下来是什么

rede 仍处于开发早期阶段。以下版本应该使其能够执行以下操作。

想象一下项目中的以下文件 ./request.toml

[http]
method = "POST"
url = "{{host}}/v1/movies"

[metadata]
name = "Add new movie"
api_version = "v1"

[input_params]
title = "string"

[input_params.release_date]
type = "string"
hint = 'Release date in format "YYYY-MM-DD"'
default = '{{utils.today("YYYY-MM-DD")}}'

[headers]
Content-Type = "application/json"
Authorization = "Bearer {{token}}"

body.json = '''
{
  "title": {{title}},
  "release_date": {{release_date}},
  "debug": true
}
'''

并想象您还有一个 ./env/local.toml 文件如下所示

host = "https://127.0.0.1:8080"
token = "MyPersonalToken"

然后,您可以从项目运行 rede,这将会发生

$ rede run --env local request
  Running request "Add new movie"
  Please, insert: `title` (string):
$ The Lion King
  Please, insert: Release date in format "YYYY-MM-DD"
  Send empty line to use default: "2024-02-29"
$ 1994-10-07

  >> HTTP Request >>
  POST localhost:8080/v1/movies
  HTTP/2.0
    - Content-Type: application/json
    - Authorization: Bearer MyPersonalToken

  [application/json]
  { "title": "The Lion King", "release_date": "1994-10-07", "debug": true }

  << HTTP Response <<
  201 Created
  HTTP/2.0
    - Content-Type application/json

  { "id": 1, "title": "The Lion King", "release_date": "1994-10-07" }

这是 rede 的想法,创建可参数化和可重用的 TOML 格式请求,可以从命令行用于测试您的 API。但在此之前还有很长的路要走。

依赖关系

~13-25MB
~386K SLoC