3 个不稳定版本

0.2.1 2020年11月19日
0.2.0 2020年11月19日
0.1.0 2020年11月19日

#5 in #request-handler

自定义许可证

54KB
1K SLoC

structpath

Rust 解析 URL 路径到结构体并从结构体生成 URL 路径的库

structpath 是一个库,允许以方便的类型安全方式解析和生成 URL 路径。

structpath 利用 serde 帮助将值解析到结构体中。

示例

基本示例

use serde::{Deserialize, Serialize};
use structpath::Schema;

#[derive(Deserialize)]
struct FooParams {
    foo_id: u128,
    bar: String,
}

const foo_path = "/foo/<foo_id:u128>/bar/<bar>";

// This is a general idea of a web request handler, not important for the demonstration
fn foo_bar(request: Request) -> Response {
    let params: FooParams = Schema::path(foo_path).parse(request.path);
}

fn baz(request: Request) -> Response {
    let foo_path = Schema::path(foo_path).generate(FooParams{foo_id: foo_id, bar: bar});
    Response::Redirect(foo_path)
}

lib.rs:

structpath 是一个库,允许以方便的类型安全方式解析和生成 URL 路径。

structpath 利用 serde 帮助将值解析到结构体中。

示例

基本示例

use serde::{Deserialize, Serialize};
use structpath::Schema;

#[derive(Deserialize)]
struct FooParams {
    foo_id: u128,
    bar: String,
}

const foo_path = "/foo/<foo_id:u128>/bar/<bar>";

// This is a general idea of a web request handler, not important for the demonstration
fn foo_bar(request: Request) -> Response {
    let params: FooParams = Schema::path(foo_path).parse(request.path);
}

fn baz(request: Request) -> Response {
    let foo_path = Schema::path(foo_path).generate(FooParams{foo_id: foo_id, bar: bar});
    Response::Redirect(foo_path)
}

依赖项

~0.4–1MB
~23K SLoC