2个版本
使用旧的Rust 2015
0.1.1 | 2017年11月24日 |
---|---|
0.1.0 | 2017年11月24日 |
#16 in #autogenerated
88 每月下载量
27KB
370 行
Rust的swagger_client API
Cargo swagger
概述
此客户端/服务器由[swagger-codegen] (https://github.com/swagger-api/swagger-codegen)项目生成。通过使用远程服务器的OpenAPI-Spec,您可以轻松生成服务器存根。
要了解如何使其成为自己的项目,请查看此处
- API版本:0.1.1
- 构建日期:2017-11-24T13:03:19.937Z 欲了解更多信息,请访问 https://metacom.metaswitch.com/
此自动生成的项目定义了一个名为swagger_client
的API包,其中包含
- 一个定义API的
Api
特质。 - 表示底层数据模型的数据类型。
- 一个实现了
Api
的Client
类型,为每个操作发出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