FastAPI is a high-performance, modern web framework that builds APIs with Python 3.6+ based on the python libraries. It is extremely easy to use and extra powerful. It will automatically be validated and converted to request type. It handles common user errors and does it in the inline code. Managing an Odoo transaction is much easier. It is easy to create an environment of objects and also able to interact with libraries and registries. Fastapi is easier to use in Odoo. Because it builds easily and has more performance. It commits automatically and uses the same environment for testing. They create tests themselves. Automatic data model documentation in JSON schema and validation can be done automatically. No compromise with the database, and frontends but easy integration are possible. It is a resource-oriented process.
FastAPI Features
Based on Open Standards
An OpenAPI is used for the creation and declaration of path operations, parameters, and body requests. The data model documentation uses JSON Schema. This also allows using automatic code generation in different languages. This is a very efficient way to create a beautiful and modern rest API on top of Odoo using the Fast API framework. It is a web framework leveraging standard python type annotations and pydantic data structure.
Automatic Docs:
The Automatic docs are Interactive API documentation for exploration of the web user interfaces. This framework has multiple options for user interfaces. It is used to test the router and endpoints. The Swagger UI uses an interactive exploration that can test your API directly from the browser.
For swagger: http://127.0.0.1:8000/docs
OpenAPI: http://127.0.0.1.8000/redocs
Data Schema
FastAPI generates a schema, the term “schema” may additionally ask the form of some data, sort of JSON content. A schema could be a definition and it’s just an abstract description.
FastAPI with Odoo Backend
To install, create a python virtual environment, and install the dependencies in it including Odoo 15,
$ python -m venv.venv
$ .venv/bin/python3 -m pip install requirements.txt
Install FastAPI:
$ pip install fastapi
or you can try out
$ pip3 install fastapi
Also, install the uvicorn that works as a server
$ pip install uvicorn
The file created with main.py,
The OpenAPI schema powers two interactive documentation systems, and there are different alternatives used to build your application with the FastAPI method.
Step 1: Import FastAPI
from fastapi import FastAPI
FastAPI is a python class that provides all the functionality for your API.
Step 2: Create a FastAPI “instance”
from fastapi import FastAPI
app = FastAPI()
@app.get("/endpointname")
async def function_name():
return {"message": "Write your message here"}
Here the app variable will be an “instance” of the FastAPI class. This will be the key to creating all your APIs.
This app is the same one referred to by uvicorn in the command:
$ uvicorn main:app - -reload
If you create your app like:
my_api = FastAPI()
@my_api.get("/")
async def root():
return {"message": "Hello World"}
You can run by,
$ uvicorn main:my_api --reload
Run the application server using,
$ env ODOO_RC = odoo.cfg .venv/bin/python3 -m uvicorn app_name:app
For creating an Odoo environment for the FastAPI, use the python file named filename.py, The odoo.api.environment, and add a function to obtain the Odoo environments.
Import Odoo from odoo.api import Environment.
def odoo_env() -> Environment:
registry = odoo.registry(odoo.tools.config['db_name']).check_signaling()
with registry.manage_changes():
with registry.cursor() as cr:
yield Environment(cr, odoo.SUPERUSER_ID, {})
Check signaling() automatically done, is to refresh the registry and cache when needed.
Initialize the odoo API (read $ODOO_RC)
– odoo tools.config.parse
Load the registry
– odoo.tools.config[“db_name”])
Create a database cursor
– registry.cursor()
Create an environment
– Environment(cr, odoo.SUPERUSER_ID, {})
That’s all about the Fast API Set Up, It is a python library to create Backend web applications and REST APIs. This is targeted toward the developers who need to efficiently and rapidly expose the Odoo database to a third-party system.