Esta é uma API simples e eficiente desenvolvida com FastAPI para realizar duas funções principais:
- Gerar imagens de QR Code a partir de um texto ou URL.
- Ler o conteúdo de um QR Code a partir do upload de uma imagem.
A API conta com documentação interativa automática (via Swagger UI) para facilitar os testes e a integração.
- Geração de QR Code em formato PNG.
- Leitura de QR Codes de imagens (PNG, JPG, etc.).
- Endpoint raiz (
/) que redireciona para a documentação. - Documentação interativa automática com Swagger UI e ReDoc.
- Estrutura assíncrona para alta performance.
- Backend: Python 3
- Framework API: FastAPI
- Servidor ASGI: Uvicorn
- Geração de QR Code:
qrcodecomPillow - Leitura de QR Code:
pyzbareOpenCV-Python
Siga os passos abaixo para executar o projeto localmente.
# Clone este repositório (ou crie a pasta do projeto)
git clone https://github.com/oHenryy/qrcode_api.git
cd qrcode_apiÉ uma boa prática usar um ambiente virtual para isolar as dependências do projeto.
- Linux/macOS:
python3 -m venv venv source venv/bin/activate - Windows:
python -m venv venv .\venv\Scripts\activate
O arquivo requirements.txt contém todas as bibliotecas necessárias.
pip install -r requirements.txtCom o ambiente configurado e as dependências instaladas, inicie o servidor Uvicorn:
uvicorn main:app --reloadmain: refere-se ao arquivomain.py.app: refere-se ao objetoapp = FastAPI()criado no arquivo.--reload: reinicia o servidor automaticamente após qualquer alteração no código.
A API estará disponível no endereço: http://127.0.0.1:8000
Para testar e interagir com a API, acesse a documentação interativa gerada automaticamente pelo FastAPI:
- Endpoint:
POST /gerar-qrcode/ - Descrição: Gera uma imagem de QR Code com base nos dados fornecidos.
- Entrada:
form-datacom um campodata(string). - Resposta de Sucesso: Uma imagem no formato
image/png.
Exemplo de uso com cURL:
curl -X POST "http://127.0.0.1:8000/gerar-qrcode/" \
-H "accept: application/json" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "data=https%3A%2F%2Fwww.google.com" \
--output qrcode_gerado.png(Este comando irá salvar a imagem do QR code gerado no arquivo qrcode_gerado.png)
- Endpoint:
POST /ler-qrcode/ - Descrição: Processa um arquivo de imagem, lê o QR Code contido nela e retorna o conteúdo.
- Entrada:
multipart/form-datacom um campofile. - Resposta de Sucesso: Um objeto JSON com o conteúdo do QR Code.
{ "data": "https://www.google.com" } - Resposta de Erro: Um objeto JSON com uma mensagem de erro.
{ "error": "Nenhum QR Code encontrado na imagem." }
Exemplo de uso com cURL:
curl -X POST "http://127.0.0.1:8000/ler-qrcode/" \
-H "accept: application/json" \
-H "Content-Type: multipart/form-data" \
-F "file=@/caminho/para/qrcode_gerado.png"(Substitua /caminho/para/qrcode_gerado.png pelo caminho real do arquivo da imagem)