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