Create a Fastapi project
for that install some pip packages
pip install fastapi
and you need a ASGI server for production
here we use uvicorn
pip install uvicron
and you need an another package named gunicorn
pip install gunicorn
write some code
Here we have to create a file for our python code. so create a file named main.py
and write some code like this
from fastapi import FastAPIapp = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
return {"item_id": item_id, "q": q}
Run the code
uvicorn main:app --reload
this will run your app in localhost and the default port will be 8000. Here main
is the filename and app
is the fastapi object.
Next is adding some stuffs for hosting.
Create requirements.txt
for creating the file just run:
pip freeze > requirements.txt
it will create the file and contents like be this
anyio==3.4.0
asgiref==3.4.1
certifi==2021.10.8
charset-normalizer==2.0.9
click==8.0.3
fastapi==0.70.1
gunicorn==20.1.0
h11==0.12.0
idna==3.3
pydantic==1.8.2
requests==2.26.0
sniffio==1.2.0
starlette==0.16.0
typing-extensions==4.0.1
urllib3==1.26.7
uvicorn==0.16.0
Its the list of packages need to run your app.
Create Procfile
create a file named Procfile
without any extensions and paste the below code
web: gunicorn -w 3 -k uvicorn.workers.UvicornWorker main:app
this contain the running script for execute your app
here main is the python file name and app is the fastapi object. so it can be changed..
Now the app is ready for deploy.
Create a Github Repo and push the code to it
and create a new heroku app linked with the respective github repo in heroku dashboard.
After bulid finished in heroku just go to your-app-url/docs
for get your api documentation