#web-apps #envoy #web #http #async #web-framework

envoy_http

一个用于快速开发的简洁且实用的 Rust 网络应用框架

8 个版本

0.2.2 2022 年 7 月 5 日
0.2.1 2022 年 7 月 5 日
0.2.0 2022 年 6 月 21 日
0.1.0 2022 年 6 月 16 日
0.0.9 2022 年 6 月 16 日

1228HTTP 服务器

26 每月下载次数

MIT/Apache

51KB
836

Envoy

服务网络

Envoy 是一个用于快速开发的简洁且实用的 Rust 网络应用框架。它提供了一套强大的功能,使得构建异步网络应用和 API 变得更加容易和有趣。

入门

为了在 Rust 中构建网络应用程序,你需要一个 HTTP 服务器和一个异步运行时。在运行 cargo init 后,将以下行添加到你的 Cargo.toml 文件中

# Example, use the version numbers you need
envoy = "0.16.0"
async-std = { version = "1.8.0", features = ["attributes"] }
serde = { version = "1.0", features = ["derive"] }

示例

创建一个 HTTP 服务器,接收 JSON 主体,验证它,并返回确认消息。

use envoy::Context;
use envoy::prelude::*;

#[derive(Debug, Deserialize)]
struct Animal {
    name: String,
    legs: u16,
}

#[tokio::main]
async fn main() -> envoy::Result {
    let mut app = envoy::new();
    app.at("/orders/shoes").post(order_shoes);
    app.listen("127.0.0.1:8080").await?;
    Ok(())
}

async fn order_shoes(mut ctx: &mut Context) -> envoy::Result {
    let Animal { name, legs } = ctx.body_json().await?;
    Ok(format!("Hello, {}! I've put in an order for {} shoes", name, legs).into())
}
$ curl localhost:8080/orders/shoes -d '{ "name": "Chashu", "legs": 4 }'
Hello, Chashu! I've put in an order for 4 shoes
$ curl localhost:8080/orders/shoes -d '{ "name": "Mary Millipede", "legs": 750 }'
Hello, Mary Millipede! I've put in an order for 750 shoes

更多示例请参见 示例 目录。

Envoy 的设计

社区资源

要添加此列表中的链接,请 编辑 markdown 文件 并提交一个 pull request(需要 GitHub 登录)
在此列出不代表 Envoy 团队的推荐或认可。自行承担风险。

监听器

模板引擎

路由器

认证

测试

中间件

会话存储

示例应用

  • dot dot vote
  • envoy-example (sqlx + askama)
  • playground-envoy-mongodb
  • envoy-morth-example
  • broker (backend as a service)
  • envoy-basic-crud (sqlx + tera)
  • envoy-graphql-mongodb
    • 使用 envoy, rhai, async-graphql, surf, graphql-client, handlebars-rust, jsonwebtoken, 和 mongodb 为 graphql 服务创建干净的样板代码。
    • Graphql 服务:用户注册、使用 PBKDF2 盐和哈希密码、登录、JSON web token 认证、更改密码、资料更新、用户的查询 & 修改、以及项目的查询 & 修改。
    • Web 应用程序:客户端请求、获取 & 解析 GraphQL 数据、将数据渲染到模板引擎(handlebars-rust),使用 Rhai 脚本语言定义自定义助手。
  • surfer
    • 基于 Envoy 堆栈构建的博客,由 envoy-graphql-mongodb 生成。
    • 使用 envoy, async-graphql, jsonwebtoken, mongodb 等后端为 graphql 服务。
    • 使用 envoy, rhai, surf, graphql_client, handlebars-rust, cookie 等前端构建 Web 应用程序。
  • envoy-server-example

贡献

想加入我们?查看指南中的 "贡献" 部分 The "Contributing" section of the guide 并查看一些这些问题

行为准则

Envoy 项目遵循 Contributor Covenant Code of Conduct。这描述了所有贡献者应遵守的最小行为准则。

许可

许可协议为以下之一

任选其一。

贡献

除非你明确指出,否则任何有意提交以包含在你通过 Apache-2.0 许可定义的作品中的贡献,都将按上述方式双许可,不附加任何额外条款或条件。

依赖项

~6–18MB
~192K SLoC