Welcome! Let's take a look at "How to create a REST API with Python and FastAPI framework"๐.
API is essential for building a multi-layer application structure, so choosing the right framework for your API can make the performance of your application robust.
FastAPI is a modern, fast (high-performance), a web framework for building APIs with Python 3.6+ based on standard Python type hints (source). It is written in Python with Starlette and Pydantic as a base. Big bull companies like Microsoft, Uber, Netflix, etc. have already started using FastAPI.
One of the reasons why I like FastAPI is because of the automatic interactive documentation. It will auto-generate Swagger documentation (not only Swagger but also Redoc) for you without any trouble of writing additional code.
Let's Begin Coding...
Prerequisites:
- Python 3.6+ (and how to use it๐)
- pip (if already installed then ignore)
Install FastAPI from pypi using pip, you also need to install an ASGI server.
pip install fastapi
pip install uvicorn[standard]
If you are familiar with the flask framework then it is very much similar to it, and if you are not then no worries. Once both are installed create a file app.py with the below code.
Let's run app.py with the below command
uvicorn app:app --reload
Adding --reload to the line will enable auto-refresh to your API whenever you save new changes. You can replace the left side app with your file/module name. For example, if you create a file as main.py then your command would be uvicorn main:app --reload.
Your API is running by now, and you can access it by going to http://localhost:8000/ from your browser. To see the documentation page of your API go to Swagger - http://localhost:8000/docs or Redoc - http://localhost:8000/redoc.
Understanding the above Code Example
After creating an instance you have defined data which is a list of dictionaries (i.e. fruits) to perform CRUD (Create Read Update and Delete) operations on it (Note: you can define your own data model or even use the database directly).
You have created an API that:
- Receives HTTP GET request in path / and /fruits , returns welcome note and list of fruits respectively.
- Receives HTTP GET request in path /find/fruits/{fruit_id} and finds fruit with given fruit ID in URL. path parameter fruit_id should be an integer as you have defined in the function argument.
Why end here let's add more methods to the API
The above code has a body (BaseModel class) with Pydantic for the PUT and POST method. Now save this code and your API should auto-refresh, you can perform all the CRUD operations.
You can now try integrating the Postgres (or any other) database using SQAlchemy and make it a production-ready REST API but that would be a topic for the next blog.
Thank you for visiting my blog๐! If you enjoyed this article, you can subscribe to my blog for the latest updates. Let me know your comments about this article.
Simple and easy to understand ...keep it up..
ReplyDeletegreat
ReplyDeleteYour blog is awesome , You have explained it clearly and its a best method to create the API's using FastAPI framework , we must incorporate this method to build the API which has high performance and its easy to code! Keep up your work Sarvesh :)
ReplyDelete