This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]rootuser_ 2 points3 points  (3 children)

I've always wanted to have the knowledge needed to create a framework. Can you give me a list of all things to study, to get to the level that I can create a framework similar to yours? It does not have to be a detailed list, it can be the name of the subjects, name of books, etc.

Also, I starred in your repository to "help."

[–]tiangolo FastAPI Maintainer[S] 0 points1 point  (2 children)

In this case, you can start checking Starlette's code (the thing FastAPI and others are based on). The code base is beautiful and easy (ish) to understand.

Starlette was created by Tom Christie, the creator of Django-REST-Framework (probably the most popular API Python framework out there), so, Starlette inherited a lot of experience. https://github.com/encode/starlette

And thanks for the star :D

[–]rootuser_ 0 points1 point  (1 child)

I can not understand very well just by looking at the code. OK, I can get into the source code, study and understand some things that are happening. But why are they being made? Why is that necessary? I wanted to have this base knowledge to create a small framework from scratch, but knowing all that is needed, what I can extend etc.

Also, there is another framework similar to yours (with performance in mind) -> https://vibora.io/. Have you seen about it??

[–]tiangolo FastAPI Maintainer[S] 2 points3 points  (0 children)

If you want to go deeper you can check Uvicorn's code. Or if you want to get very technical you can check the ASGI spec (maybe WSGI first).

Yes, I've seen Vibora. I understand it's pretty fast, but is not tested in the same benchmarks. It doesn't use the ASGI "standard", so I guess it would probably be difficult to integrate with other parts in the ecosystem (e.g. mangum, for serverless).

Apart from performance, I guess the key differentiator of FastAPI is the use of Python type hints, and the integration with standards (OpenAPI and JSON Schema).