[DICA] Fazendo deploy de API Python(FastApi) na Vercel
Nesta postagem, eu utilizei o FastApi para nosso projeto, fiz deploy na Vercel e disponibilizei dois endpoints HTTP.
É possível fazer deploy de API Python na Vercel, usando as funções Serverless. No momento, a Vercel disponibiliza a runtime do Python gratuitamente na versão Beta. Sendo assim possível utilizar as funcionalidades do WSGI (Web Server Gateway Interface), com o Django, ou Flask, por exemplo…
Dependências
-
Criar arquivo de configuração requirements.txt
-
Setar FastApi na versão à ser usada, ex: fastapi==0.88.0
fastapi==0.88.0
Diretório api
Normalmente em projetos Vercel, o diretório onde as funções Lambda ficam é o ./api
. Sabendo disso, iremos criar esse diretório.
- Criar pasta chamada /api
Arquivo index
Nesse exemplo, iremos criar um arquivo index.py
dentro de ./api
. Após criar o arquivo, iremos importar o fastapi, para poder utilizá-lo:
from fastapi import FastAPI
Depois criamos uma instancia do fastapi:
app = FastAPI()
A nossa primeira rota, é um GET
no caminho /
que irá retornar uma mensagem de “Hello World”:
@app.get("/")
async def root():
return {"message": "Hello World"}
Preview: https://deploy-python-fastapi-in-vercel.vercel.app/docs
Nossa segunda rota irá fazer o mesmo, porém passando um parâmetro no path:
@app.get("/hello/{name}")
async def say_hello(name: str):
return {"message": f"Hello {name}"}
Preview: https://deploy-python-fastapi-in-vercel.vercel.app/hello/Deschamps
Nosso arquivo final irá ficar desta forma:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
@app.get("/hello/{name}")
async def say_hello(name: str):
return {"message": f"Hello {name}"}
Configuração da Vercel
Após criar a base do projeto, o passo seguinte será criar arquivo de configuração do Vercel (vercel.json
), e criar a configuração;
{
"build": {
"src": "api/index.py",
"use": "@vercel/python"
},
"routes": [
{
"src": "/(.*)",
"dest": "api/index.py"
}
]
}
Criando a configuração, podemos então fazer o deploy. Caso não tenha o Vercel CLI instalado e configurado, recomendo fazer a instalação: https://vercel.com/docs/cli.
O comando vercel
é usado para fazer deploy de projetos Vercel e pode ser usado a partir da raiz do diretório do projeto. Ou também pode ser usado o comando vercel deploy
Fontes:
Repositório:
https://github.com/hebertcisco/deploy-python-fastapi-in-vercel