5 ms·
I ran across FastAPI earlier this year and did a tiny prototype to play with it. Selling points for me: - Integrates nicely with some existing libraries (Star
by acemarke 7y ago
I ran across FastAPI earlier this year and did a tiny prototype to play with it. Selling points for me:
- Integrates nicely with some existing libraries (Starlette, Pydantic)
- Well documented
- Auto-validation of endpoints from data models
- Auto-generation of OpenAPI schemas from those models
- Auto-serves live API docs from that schema
- Easy definition of sync and async endpoints
Again, it was just a tiny proof-of-concept prototype, but I'm sold on using it on future projects.
- ivalm 7y ago> - Auto-generation of OpenAPI schemas from those models Is there a package that can do a reverse? Can I give it an OpenAPI spec and get a code stump going?
- drchaim 7y agohttps://github.com/zalando/connexion/ https://github.com/zalando/connexion/ Solves most of the problems for that.
- BerislavLopac 7y agoOpenAPI-generator [0], written in Java, can produce Python stumps, but I never liked that approach. Connexion [1] is built on top on Flask and does routing and validation based on an OpenAPI spec. I've recently started developing Pyotr [2], which does the same only based on ASGI and Starlette. It also includes a client module. [0] https://openapi-generator.tech/ https://openapi-generator.tech/ [1] https://connexion.readthedocs.io/ https://connexion.readthedocs.io/ [2] https://github.com/berislavlopac/pyotr https://github.com/berislavlopac/pyotr
- hyzyla 7y agoBut I found one drawback of using FastAPI - defining all inputs in handler function signature is looks bit complicated and verbose. I prefer one input with type that are structure of another types. Something like this: class CreatePostInput(InputClass): text: str user_id: str ... @handler.post('/post') def create_post(input: CreatePostInput): ...