FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints. It is built on top of Starlette for the web parts and Pydantic for data validation and serialization.
In this tutorial, we will cover the basics of FastAPI and how to build an API using this framework. We will explore the various features of FastAPI, including request handling, response handling, parameter validation, dependency injection, and more.
Prerequisites:
- Basic knowledge of Python
- Basic understanding of APIs
Let’s get started with our FastAPI tutorial:
-
Installation:
First, you need to install FastAPI and Uvicorn, which is a lightning-fast ASGI server:pip install fastapi uvicorn
- Create a basic app:
Create a new Python file e.g.,main.py
, and import FastAPI:from fastapi import FastAPI
app = FastAPI()
3. Running the app:
You can run the app using Uvicorn:
```bash
uvicorn main:app --reload
This command starts the app on http://localhost:8000
.
- Building endpoints:
Now, let’s build some endpoints in our app:@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}
In the above code, we have defined two endpoints - one at the root path `/` and another at `/items/{item_id}` where `item_id` is a path parameter and `q` is a query parameter.
5. Request and response handling:
FastAPI automatically handles request and response serialization based on the data type hints specified in the function signature. For example, in the `read_item` function, FastAPI will automatically convert the return dictionary to JSON.
6. Parameter validation:
FastAPI supports automatic request validation using Pydantic models. You can define request and response models like:
```python
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
And then use these models in your endpoints:
@app.post("/items/")
async def create_item(item: Item):
return item
FastAPI will automatically validate the incoming request JSON against the Item
model.
- Dependency injection:
FastAPI supports dependency injection, allowing you to inject dependencies into your endpoint functions. For example, you can inject a database connection or a service object:from fastapi import Depends
async def get_db():
db = DBConnection()
try:
yield db
finally:
db.close()
@app.get("/items/")
async def read_items(db: DBConnection = Depends(get_db)):
items = db.get_items()
return items
8. API documentation:
FastAPI automatically generates interactive API documentation using Swagger UI. You can access the documentation at `http://localhost:8000/docs`.
9. Middleware:
FastAPI supports middleware for intercepting and modifying requests and responses. You can define middleware functions that can modify the request or response before it reaches the endpoint handler.
10. Background tasks:
FastAPI supports background tasks that can run asynchronously in the background. You can define background tasks to be executed after a request is processed.
This concludes our FastAPI tutorial. FastAPI is a powerful and modern web framework for building APIs with Python. It offers a lot of features out of the box and is very easy to use. I hope this tutorial has helped you get started with FastAPI. Happy coding!
Please like and comment which portion of this course you liked most
i had been working over other tools and framework for developing API's, So wanted some POC to be done to ensure we can start some migration an this helped me a lot understanding concepts of FATSAPI and hands on. This is simply awesome
Hi all, I've been running into an issue with the POST method, when i create the method on my main.py. Swagger UI does not show the the post method. I did some debugging and it seems like its blocked due to CSP policies. Any ideas? im running Windows 11
I am getting this error when ever I am passing ShowUser in the creator parameter in the schema:
{'type': 'missing', 'loc': ('response', 'creator'), 'msg': 'Field required', 'input': <blog.model.Blog object at 0x106cd8950>}
so thin voice though (tutorial is good)
This is an excellent tutorial to watch! I highly recommend it for anyone starting with FastAPI. The explanations are clear and thorough. Thank you so much for this wonderful tutorial. Please continue making videos like this. Happy coding!🎉❤
Could you please post Quart API tutorial video?
This is great. Very straightforward Explanation.
Here, you will mostly find reviews saying that this tutorial is the best and all, but let me give you an honest review: this tutorial is not beginner-friendly, and the instructor is making it really complicated. I am only commenting here because I want to let those who are not understanding this properly know that you are not alone. In the comments section, you will find positive comments, and you may think that you are the only one who is unable to understand this, but that is not the truth.
Thanks!
Best course till date
This is an extensive and detailed tutorial for fastapi. I truely enjoyed it. I faced some issues with update and OAuth2PasswordRequestForm submit. But I am able to resolve by myself. Again Thanks for this tutorial.
User id 1 is still static when blog is created
What programm can i use instead of TablePlus, I am a Windows user
tutorial is really good!!
2x speed will save you a lot of time guys
35:57
Thanks a lot!!🙏🙏
I've learned a lot from you. You're amazing, and I appreciate your clean code!
1hr 20 min in and i must say i love this, this is straight up tutorial and thanks