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

#2117 in Web programming

MIT license

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

Dependencies

~20–34MB
~600K SLoC