2个版本

使用旧的Rust 2015

0.1.1 2017年11月24日
0.1.0 2017年11月24日

#16 in #autogenerated

Download history 16/week @ 2024-03-28 5/week @ 2024-04-04 77/week @ 2024-06-06 11/week @ 2024-06-13

88 每月下载量

MIT 协议

27KB
370

Rust的swagger_client API

Cargo swagger

概述

此客户端/服务器由[swagger-codegen] (https://github.com/swagger-api/swagger-codegen)项目生成。通过使用远程服务器的OpenAPI-Spec,您可以轻松生成服务器存根。

要了解如何使其成为自己的项目,请查看此处

README

此自动生成的项目定义了一个名为swagger_client的API包,其中包含

  • 一个定义API的Api特质。
  • 表示底层数据模型的数据类型。
  • 一个实现了ApiClient类型,为每个操作发出HTTP请求。
  • 一个路由器,接受HTTP请求并为每个操作调用适当的Api方法。

它还包括一个示例服务器和客户端,它们使用了swagger_client

  • 示例服务器使用swagger_client路由器启动Web服务器,并提供了对每个操作返回失败的简单实现。
  • 示例客户端提供了一个CLI,允许您通过在命令行上传递适当的参数来调用swagger_client客户端上的任何单个操作。

您可以将示例服务器和客户端用作自己的代码的基础。有关实现服务器的更多详细信息,请参见下面的实现服务器

示例

使用以下命令运行示例

cargo run --example <example-name>

要将参数传递给示例,请将它们放在--之后,例如

cargo run --example client -- --help

运行服务器

要运行服务器,请按照以下简单步骤操作

cargo run --example server

运行客户端

要运行客户端,请按照以下简单步骤之一操作

cargo run --example client UploadApi

HTTPS

可以通过传递标志--https在HTTPS模式下运行示例,例如

cargo run --example server -- --https

这将使用示例目录中的密钥/证书。请注意,服务器链由CN=localhost签名。

编写服务器

服务器示例旨在作为实现自己的服务器的基础。只需按照以下步骤操作。

  • 设置一个新的Rust项目,例如,使用cargo init --bin
  • swagger_client添加到根目录Cargo.toml下[workspace]部分的members数组中,例如:members = [ "swagger_client" ]
  • 在根目录Cargo.toml下的[dependencies]部分添加swagger_client = {version = "0.1.1", path = "swagger_client"}
  • [dependencies][dev-dependencies]swagger_client/Cargo.toml复制到根目录Cargo.toml[dependencies]部分。
    • 复制所有[dev-dependencies],但只复制示例服务器所需的[dependencies],并在注释中清楚地说明。
    • 如果存在,从这些行中删除"optional = true"

每个自动生成的API将包含一个实现占位符和主入口点,第一次应该将其复制到您的项目中。

cp swagger_client/examples/server.rs src/main.rs
cp swagger_client/examples/server_lib/mod.rs src/lib.rs
cp swagger_client/examples/server_lib/server.rs src/server.rs

现在

  • src/main.rs中删除mod server_lib;行,取消注释并填写extern crate行,其中包含此服务器crate的名称。
  • 将“由服务库所需的”导入块从src/main.rs移动到src/lib.rs,并取消注释。
  • let server = server::Server {};行更改为let server = SERVICE_NAME::server().unwrap();,其中SERVICE_NAME是服务器crate的名称。
  • 运行cargo build以检查是否构建成功。
  • 运行cargo fmt重新格式化代码。
  • 在做出任何进一步更改之前提交结果(以免格式更改与您的更新混淆)。

现在根据需要将 src/server.rs 中的实现替换为您的代码。

更新您的服务器以跟踪API更改

稍后,如果API发生更改,您可以从自动生成的API存根中复制新的部分到您的实现中。或者,根据编译器的错误信息实现现在缺失的方法。

依赖项

~5.5–7.5MB
~170K SLoC