hsr

Crates.iohsr
lib.rshsr
version0.4.0
sourcesrc
created_at2019-08-14 11:03:51.252864
updated_at2022-11-10 10:45:22.382744
descriptionBuild fast HTTP APIs fast, with Rust + OpenAPI
homepagehttps://github.com/adwhit/hsr
repositoryhttps://github.com/adwhit/hsr
max_upload_size
id156729
size6,546
(adwhit)

documentation

README

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 and actix-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

Commit count: 183

cargo fmt