4 releases (breaking)
0.4.0 | Nov 10, 2022 |
---|---|
0.3.0 | May 3, 2020 |
0.2.0 | Jan 12, 2020 |
0.1.0 | Aug 14, 2019 |
#2079 in Web programming
7KB
60 lines
HSR
Build fast HTTP apis fast, with Rust, and OpenAPI
- Define your API as an OpenAPI 3.0 spec
- HSR will code-gen a server/client interface
- Implement your interface (simple, safe, strongly typed!)
- Run! 'If it compiles, it works!'
Docs
Quickstart
Take a look at the quickstart example. It contains the minimum boilerplate needed to get up and running.
Tutorial
Read the tutorial for a step-by-step guide to get up and running.
Less Quick Start
Take a look at the petstore example for a more complex example with a mocked database backend.
Features
- HTTP server
- HTTP client
- Type-safe path/query/json handling
- Supports all HTTP verbs
- High performance
- Based on
async/await
andactix-web 4.2.1
FAQ
What's the difference between this and swagger-rs?
I haven't used swagger-rs
, however the major difference is that hsr
is pure Rust,
whereas swagger-rs
takes advantage of an existing code-generator written in Java.
That means that the swagger-rs
is more mature likely much more correct,
hsr
is much easier to use and is seamlessly integrated into typical Rust workflow.
What do you mean, 'fast'?
It uses Actix-Web under the hood, rated as one of the
fastest web frameworks by techempower.
hsr
imposes very little overhead on top.
As a simple and not-very-scientific benchmark, on my laptop (X1 Carbon 6th Gen) I measured around:
- 120,000 requests/second for an empty GET request
- 100,000 requests/second for a POST request with a JSON roundtrip
Try it yourself! See the bench example.
Why the name?
I like fast trains.
License
MIT
Dependencies
~18–29MB
~516K SLoC