1. O Que é Flask?
Flask é um microframework que facilita o desenvolvimento de aplicações web e APIs em Python. Ele foi projetado para ser leve, permitindo que os desenvolvedores escolham as bibliotecas e extensões conforme as necessidades do projeto. Ao contrário de frameworks mais robustos como o Django, Flask não impõe muitas convenções, o que o torna ideal para quem quer flexibilidade e simplicidade no desenvolvimento de APIs.
2. Instalando Flask
Para começar a usar Flask, primeiro instale o framework em seu ambiente Python. Isso pode ser feito com o gerenciador de pacotes pip
.
# Instalando Flask
pip install Flask
Uma vez instalado, você pode começar a criar seu primeiro projeto com Flask e iniciar a construção de sua API.
3. Criando uma API Simples com Flask
Vamos começar criando uma API simples que responde a requisições HTTP GET. Primeiro, crie um arquivo Python chamado app.py
e importe a biblioteca Flask.
# app.py
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/api', methods=['GET'])
def api_home():
return jsonify({"message": "Bem-vindo à minha API!"})
if __name__ == '__main__':
app.run(debug=True)
Neste exemplo, criamos uma rota /api
que responde com uma mensagem simples em formato JSON. O método jsonify()
é usado para converter o dicionário Python em uma resposta JSON.
Para rodar a aplicação, basta executar o seguinte comando no terminal:
# Executando a aplicação Flask
python app.py
Agora, ao acessar http://localhost:5000/api
, você verá a resposta JSON com a mensagem de boas-vindas.
4. Criando Rotas Dinâmicas
Uma das funcionalidades mais poderosas do Flask é a criação de rotas dinâmicas, que permitem que sua API receba parâmetros diretamente da URL. Veja um exemplo de como isso pode ser feito para obter dados de usuários por ID.
# Rota dinâmica para obter um usuário pelo ID
@app.route('/api/usuario/', methods=['GET'])
def obter_usuario(usuario_id):
usuarios = {
1: {"nome": "Ana", "idade": 30},
2: {"nome": "Bruno", "idade": 25}
}
usuario = usuarios.get(usuario_id)
if usuario:
return jsonify(usuario)
else:
return jsonify({"erro": "Usuário não encontrado"}), 404
Aqui, criamos uma rota que recebe o usuario_id
diretamente da URL e retorna os dados do usuário correspondente, caso exista. Se o ID do usuário não for encontrado, a API responde com uma mensagem de erro e o status HTTP 404.
5. Manipulando Requisições POST
APIs também são usadas para criar e atualizar dados. Em Flask, você pode lidar com requisições POST para receber dados do cliente e processá-los. Aqui está um exemplo de como criar um usuário via API.
# Manipulando requisições POST para criar um usuário
from flask import request
@app.route('/api/usuario', methods=['POST'])
def criar_usuario():
dados = request.get_json()
nome = dados.get('nome')
idade = dados.get('idade')
if not nome or not idade:
return jsonify({"erro": "Dados incompletos"}), 400
novo_usuario = {"nome": nome, "idade": idade}
return jsonify(novo_usuario), 201
Neste exemplo, a API espera um corpo JSON com os campos nome
e idade
. Se os dados estiverem corretos, um novo usuário é criado e retornado com o status HTTP 201 (Created).
6. Utilizando Status HTTP
Ao construir uma API, é importante retornar os códigos de status HTTP corretos para indicar o sucesso ou falha das requisições. O Flask permite que você defina facilmente esses status junto com a resposta JSON.
# Exemplo de resposta com status HTTP
@app.route('/api/status', methods=['GET'])
def status_check():
return jsonify({"status": "API está funcionando!"}), 200
O código HTTP 200 indica que a requisição foi bem-sucedida. Outros códigos comuns incluem 201 (Created), 400 (Bad Request), 401 (Unauthorized) e 404 (Not Found).
7. Melhorando a API com Blueprints
Conforme a API cresce, pode ser útil organizar suas rotas em módulos separados. Flask oferece Blueprints
, que permitem modularizar as rotas em diferentes arquivos, facilitando a manutenção e escalabilidade da aplicação.
# Exemplo de uso de Blueprints
# no arquivo api.py
from flask import Blueprint, jsonify
api_bp = Blueprint('api', __name__)
@api_bp.route('/status', methods=['GET'])
def api_status():
return jsonify({"status": "API está ativa"})
# no arquivo app.py
from api import api_bp
app.register_blueprint(api_bp, url_prefix='/api')
Com Blueprints, você pode dividir suas rotas em vários arquivos e depois registrá-los no arquivo principal da aplicação, melhorando a organização do código.
8. Testando a API com Postman
Para testar a API que você desenvolveu, uma das melhores ferramentas é o Postman. Ele permite enviar requisições HTTP (GET, POST, PUT, DELETE) para sua API e visualizar as respostas de forma clara. Simplesmente configure as requisições no Postman e observe como a API se comporta.
Conclusão
Desenvolver APIs com Flask é uma maneira simples e eficaz de criar interfaces para aplicações web. Com sua flexibilidade, Flask permite que você crie APIs escaláveis e organize o código de forma modular usando Blueprints. Ao seguir as boas práticas e utilizar códigos de status HTTP adequados, você garante que sua API será eficiente e fácil de manter.