Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add FastAPI to web frameworks #43

Open
wants to merge 1 commit into
base: master
from

Conversation

Projects
None yet
3 participants
@tiangolo
Copy link

tiangolo commented Dec 22, 2018

What is this project?

FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+.

Documentation: https://fastapi.tiangolo.com

Source Code: https://github.com/tiangolo/fastapi

The key features are:

  • Fast: Very high performance, on par with NodeJS and Go (thanks to Starlette and Pydantic).

  • Fast to code: Increase the speed to develop features by about 200% to 300% *.

  • Less bugs: Reduce about 40% of human (developer) induced errors. *

  • Intuitive: Great editor support. Completion everywhere. Less time debugging.

  • Easy: Designed to be easy to use and learn. Less time reading docs.

  • Short: Minimize code duplication. Multiple features from each parameter declaration. Less bugs.

  • Robust: Get production-ready code. With automatic interactive documentation.

  • Standards-based: Based on (and fully compatible with) the open standards for APIs: OpenAPI and JSON Schema.

* estimation based on tests on an internal development team, building production applications.

Note: Please respect the Contribution Guidelines!

Why is it awesome?

Why is the project you are adding awesome? What's different between this project and others?

For the features above, and the fact that with simple, standard Python 3.6+ type declarations, you get:

  • Great editor support (completion everywhere and type checks).
  • Data conversion (serialization, parsing).
  • Data validation.
  • Automatic annotations and documentation using OpenAPI and JSON Schema.
  • 2 automatic interactive API documentation user interfaces.

A block of code is worth a thousand words:

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

And you get this, "for free":

Swagger UI

And the coding experience is great, with completion and type checks everywhere:

editor support

@timofurrer

This comment has been minimized.

Copy link
Owner

timofurrer commented Dec 24, 2018

Personally I like your project!
We've already got a big list of web frameworks, so let's see if we can get some people to vote for it.

🎄 🎉

@tiangolo

This comment has been minimized.

Copy link
Author

tiangolo commented Dec 24, 2018

Awesome, thanks!

@therumbler
Copy link
Contributor

therumbler left a comment

FastAPI looks very interesting! Looking forward to trying it out, as an alternative to aiohttp.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.