In this tutorial, I will show you step by step how to create a Python API using FastAPI, a modern web framework for building APIs with Python. FastAPI is fast, simple to use, and easy to learn, making it a great choice for building web services or APIs.
Before we begin, make sure you have Python installed on your machine. You can download Python from the official website (https://www.python.org/). Once you have Python installed, you can proceed with the following steps to create your Python API with FastAPI.
Step 1: Create a new Python virtual environment
To keep your project dependencies isolated and organized, it’s a good practice to create a new virtual environment for each project. To create a new virtual environment, open your terminal or command prompt and run the following command:
$ python -m venv myenv
This command will create a new virtual environment named myenv
. You can replace myenv
with any name you prefer.
Step 2: Activate the virtual environment
Once the virtual environment is created, you need to activate it. To activate the virtual environment, run the following command:
For Windows:
$ source myenv/Scripts/activate
For MacOS or Linux:
$ source myenv/bin/activate
Step 3: Install FastAPI and Uvicorn
Next, you need to install the FastAPI framework and Uvicorn, a lightning-fast ASGI server. To install FastAPI and Uvicorn, run the following command:
$ pip install fastapi uvicorn
Step 4: Create a new Python file for your API
Create a new Python file in your project directory. You can name the file main.py
or any other name you prefer. Open the file in your favorite code editor and start building your API.
Step 5: Define your API endpoints
In your main.py
file, import FastAPI and create an instance of the FastAPI class. Define your API endpoints using the @app.get()
or @app.post()
decorators. Here is an example of a simple API endpoint that returns a JSON response:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello, World!"}
Step 6: Run your API using Uvicorn
To run your API, use the Uvicorn ASGI server. In your terminal, navigate to the directory where your main.py
file is located and run the following command to start the server:
$ uvicorn main:app --reload
This command tells Uvicorn to run your main.py
file with the app
instance created using FastAPI. The --reload
flag enables automatic reloading of the server when changes are made to your code.
Step 7: Test your API
Once your API is running, open your web browser and go to http://127.0.0.1:8000/
to test your API endpoint. You should see the JSON response returned by your API, like {"message": "Hello, World!"}
.
Congratulations! You have now created a Python API using FastAPI. You can further enhance your API by adding more endpoints, handling request parameters, connecting to a database, and much more. FastAPI provides comprehensive documentation that covers all the features and functionalities of the framework. You can refer to the official FastAPI documentation (https://fastapi.tiangolo.com/) for more information and examples.
I hope this tutorial has been helpful in getting you started with building APIs using FastAPI. Happy coding!
Why use repeat keyword like task Task tasks….it just add to confusion
very clear demonstration, could you make one with authentication?
I've had a really funny day at work. We have a K8S cluster set up and implemented a very basic CRUD structure using fastapi which creates or deletes argo workflows. The upper heads seem to love this idea, but one guy accidently ran a pipeline that generates thousands of workflows which brought down the entire cluster. You can also write a simple perl script to send an infinite amount of requests to burn down EVERY node and its cores in no time.
That's really like Flask + RestX, but much more simpler, great tutorial
for some reason when its time to open my web browser it says that the website/api cannot be found
Awesome tutorial, always a pleasure to enhance coding skills by watching your videos.
Please share code also
hey Tim just checking in for issues im having on my end as a new programmer learning python…I had fastapi imported and unicorn imported awhile ago following one of ur old videos, but apparently I was having trouble in the editor claiming module could not be found… so I spend 3 days learning how to properly setup a folder to organize files and learned how to setup venv and how to properly activate it just for ip link not to work in my browser…I haven't gotten past the 8:08 mark yet..I get it im a beginner and dont know how to setup everything up from scratch but im still trying
Big thanks and much love from India. Please add JWT authentication to this code and upload part 2 of the same.
what db solution do you suggest using with fastapi, the docs have sqlAlchemy but they are suggesting to move to sqlmodel, if you can, please make a video integrating db as well.
Great tutorial – thanks a lot!
Is this an alternative to restful api? What ive
Hey can you please make some NEAT implementation in python with pygame like a full series as many people are interested in machine learning
Need the rest of the Rust series
Thanks tim 🎉 you’re the best 😊
Of course nice tutorial. However everyone would like to get information about templating like flask. Tim, I know you can make that kind of tutorials as well for your subscribers)))
Much needed 🥺
great video.
just to note,
imo you never want to set a root pass for your deployment. always always setup keys initially!!
it'll save you the trouble down the line 🙂
@19:43 "The method 'dict' in Class 'BaseModel' is depricated, use model.dump" = update_task = task.copy(update=task_update.model_dump(exclude_unset=True)) (pydantic: 2.7.1)
Hi Tim this was an amazing video , is it possible to have some go-lang videos in the future ? you have a talent for teaching and i would love to learn more about go from you