okapi
rweb
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
okapi
-
Looking for a Rust API with automatic documentation and good validation?
It's inspired by others in the space that you might check out: paperclip, okapi, and others.
-
Web frameworks with integrated Open API?
okapi: supports rocket
-
Type-safe OpenAPI server for Rust?
okapi looks decent as well. Has codegen for Rocket: https://github.com/GREsau/okapi
- What libraries do you miss from other languages?
-
Rust and OpenAPI
I have used it the other way around. I created the Rust code and using that to generate the documentation. https://github.com/GREsau/okapi this worked very good. Here is the generated documentation: https://docs.dfstoryteller.com/rapidoc/ This uses the Rust Doc comments to populate the documentation.
-
Replacing FastAPI with Rust: Part 2 - Research
Oh Rocket, you playful muse. I've watched you ascend from my early Rust days; yet each time I reach for you my heart sinks more. This research project of mine led me to okapi, an extension for OpenAPI documentation. And yet, I have to pass once again. While most of the Rust ecosystem blazes toward async, you inch toward it too slowly. Perhaps next time I search for a web framework our paths will align, but until then, I must follow a different orbit.
rweb
-
Is there a Flask like library for Rust?
rweb is pretty simple. it's based on warp, but with rocket-like #[get("/product/{id}")] which is like Flask's @app.route("/product/").
-
A web framework I desperately wish there was a Rust equivalent for: FastAPI
I wrote a PR this weekend to give FastAPI like UX to rweb! https://github.com/kdy1/rweb/pull/56
-
Replacing FastAPI with Rust: Part 3 - Trying Actix
This crate has an implementation for the Handler trait which I used to model my own Handler trait for an actix-web Service. Using my own struct which implemented that trait suddenly made the "this is not Send" error messages simple enough to decipher. I was able to get the thing to actually compile, but it required using a few unwrap()s on errors which were not Send. I could probably go back and figure out how to wrap or map those errors to something simpler to make my implementation less fragile, but I was already annoyed enough at this implementation that I was headed toward rweb anyway.
-
Replacing FastAPI with Rust: Part 2 - Research
All of that is to say rweb is a possible solution, but not a likely one. The product seems great, and if the code functions as well as the brief examples indicate, this is the best option from a code perspective (oops, spoilers!). Given my concerns about the community, I would have to be comfortable forking and maintaining my own version of this framework in the event that I need changes and can't wait months for a PR to be reviewed. Even if that's not the case, I'll certainly have to write much more complete documentation for my teammates to be able to use this project effectively. I'm not mortally opposed to any of that, but I'd rather avoid it if I can.
What are some alternatives?
vouch-proxy - an SSO and OAuth / OIDC login solution for Nginx using the auth_request module
rust-fastapi-experiments
openapi-generator - OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)
juniper - GraphQL server library for Rust
poem - A full-featured and easy-to-use web framework with the Rust programming language.
dropshot - expose REST APIs from a Rust program
actix-web - Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust.
openapi-python-client - Generate modern Python clients from OpenAPI
not-yet-awesome-rust - A curated list of Rust code and resources that do NOT exist yet, but would be beneficial to the Rust community.
cloudscraper - A Python module to bypass Cloudflare's anti-bot page.
graphql-playground - 🎮 GraphQL IDE for better development workflows (GraphQL Subscriptions, interactive docs & collaboration)