百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
S

sapper

> 编程语言
开源

基于 hyper 构建的轻量级 Web 框架,使用 Rust 语言实现。

617 stars0 点赞0 次浏览
访问官网GitHub

工具介绍

基于 hyper 构建的轻量级 Web 框架,使用 Rust 语言实现。

Sapper

Sapper, a lightweight web framework, written in Rust.

Sapper focuses on ergonomic usage and rapid development. It can work with stable Rust.

Sapper now is based on hyper 0.10.13.

Tutorial

Look into json demo, you can learn how to parse http parameters, and return json;

Look into mvc diesel demo, you can learn how to use database, how to render template, and how to redirect.

English Tutorial

中文教程

Import

In Cargo.toml,

[dependencies]
sapper = "0.1"

Basic Example

Now, you can boot the example server with:

bash
cd examples/basic/
cargo build
cargo run

and open the browser, visit

http://localhost:1337/

or

http://localhost:1337/test

or any other url to test it.

Other Examples

  1. tiny

  2. init_global

  3. query params

  4. body params

  5. session

  6. template rendering

  7. simple logger

  8. response json

  9. mvc diesel demo

  10. more continued...

Basic Benchmark

…

Features

  • Sapper supplies only basic framework;
  • Three level granularity (global, module, function handler) middleware controller and unified middleware presentation;
  • Typesafe abstraction, keep the same spirit with hyper;
  • For easy using, will supply some convenient macros to help write business logics;
  • Global object cross requests;

Philosophy

Typed, hierarchical control, and middlewares.

Typed

In Sapper, nearly every important thing is a Type. They are:

  • Each module is a type, different modules are different types;
  • Every middleware supplies some (0 to n) types for handler getting values;
  • Inherited from hyper's typed spirit, all headers, mime and so on should use types for manipulation.

Hierarchical Control

  • Sapper forces you to put router in each module (in main.rs, you can not write it, no space left for you to write);
  • Sapper forces you to seperate the router binding and the handler realization;
  • Sapper's plugin processor can be used in app level wrapper, module level wrapper, and each handler. These three level hierarchical controls make it flexible to construct your business.

Middlewares

Sapper's core contains only router system, request and response definitions, middleware system, and some other basic facilities. Nearly all practical features, such as query parameter, body parameter, cookie, session, json, xml, orm..., are supplied by the corresponding middlewares.

Sapper's middleware is very easy to write. One rust module realized a function on the prototype of

rust
fn (&mut Request) -> Result;  // before plugin
fn (&Request, &mut Response) -> Result; // after plugin

can be thought as Sapper's middleware. Sample middleware: sapper_query.

TODO

  1. QueryParams (x-www-form-urlencoded);
  2. BodyParams (x-www-form-urlencoded);
  3. BodyJsonParams;
  4. Basic static file serving for dev;
  5. Global object shared cross requests;
  6. Macros;
  7. Multipart;

Middlewares

  • sapper_query parsing query string for req;
  • sapper_body parsing body parameters for req, including url form encoded, json type, json to struct macro;
  • sapper_logger record request and caculate its time;
  • sapper_session a cookie plugin, and else supply a helper set_cookie function;
  • sapper_tmpl use tera to render template;

Related Projects

Thanks to these projects below:

  • hyper Sapper is based on hyper mio branch;
  • iron Sapper learns many designs from iron;
  • router Sapper steals router about code from it;
  • recognizer Sapper uses this route recognizer;

License

MIT

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Rust

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言