Domine inglês técnico de programação em 2025, seja qual for seu nível. Inscrição gratuita
Como criar sua primeira API com Flask em Python
Rocketseat
Navegação Rápida:
Se você deseja dar o primeiro passo no desenvolvimento de APIs utilizando Python, este artigo foi feito para você. APIs (Application Programming Interfaces) são a base para conectar sistemas, integrar serviços e criar aplicações robustas. E, com o Flask, um framework leve e poderoso, você pode criar sua primeira API de maneira simples e eficiente.
Neste guia, vamos desmistificar os conceitos fundamentais, desde a instalação até a criação de um CRUD completo, que é a base para gerenciar dados em sistemas. Prepare-se para transformar seus conhecimentos e começar a construir APIs funcionais hoje mesmo!
O que é uma API?
Antes de mergulharmos no código, é essencial entender o que é uma API. Em resumo, uma API é um intermediário que permite que diferentes aplicações conversem entre si. Imagine que você quer informações do menu de um restaurante (servidor). Você faz um pedido (requisição) ao garçom (API), que retorna o prato desejado (resposta). Simples assim!
Com APIs, você pode:
- Integrar sistemas: conectar aplicativos front-end ao back-end.
- Automatizar processos: facilitar a troca de dados entre serviços.
- Criar soluções escaláveis: compartilhar funcionalidades entre múltiplas aplicações.
Quer entender ainda mais sobre como as APIs revolucionam as aplicações web? Leia o artigo REST API: desvendando o poder das aplicações web e descubra por que elas são indispensáveis para o desenvolvimento moderno.
E que tal assistir a uma explicação visual e prática? Confira o vídeo abaixo e aprenda, de forma descontraída, o que é uma API e como ela funciona. Dê o play e prepare-se para aprender!
O que é Flask e por que usá-lo?
O Flask é um framework minimalista para Python que permite criar aplicações web e APIs de forma rápida. Ele é:
- Leve: perfeito para quem busca simplicidade e controle.
- Extensível: você adiciona apenas os componentes necessários.
- Ideal para iniciantes: a curva de aprendizado é suave, mas ele é poderoso o suficiente para projetos complexos.
Quer explorar ainda mais o poder do Flask? Confira o artigo Python: desenvolvendo aplicações web com flask e mergulhe nas infinitas possibilidades que esse framework oferece.
Agora que entendemos o básico, vamos criar sua primeira API do zero.
Começando com Flask
Antes de tudo, você precisa ter o Python instalado em sua máquina. Se ainda não sabe como começar com Python ou quer explorar mais sobre a linguagem, não deixe de conferir o artigo como começar a aprender Python. Lá você encontra um guia completo para instalação, além de dicas valiosas para dominar os fundamentos da linguagem.
Com o Python instalado, siga para a instalação do Flask. Use o comando:
pip install flask
Organize seu projeto com a seguinte estrutura:
meu_projeto/ ├── app.py └── models/ └── task.py
Agora estamos prontos para começar!
Criando a estrutura da API
Agora que você já preparou o ambiente e organizou seu projeto, chegou a hora de colocar a mão na massa e criar sua primeira API com Flask! Vamos começar do básico e gradualmente construir um CRUD completo para gerenciar tarefas. Pronto?
Todo desenvolvedor começa seu aprendizado com um clássico "Hello, World!", e aqui não será diferente. Crie o arquivo
app.py
e insira o código abaixo:from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello, World!" if __name__ == "__main__": app.run(debug=True)
Agora, salve o arquivo, abra seu terminal, navegue até a pasta onde está o projeto e execute:
python app.py
Ao ver no terminal algo como "Running on http://127.0.0.1:5000", abra seu navegador e acesse http://localhost:5000. Se tudo deu certo, você verá a mensagem "Hello, World!".
Parabéns, sua primeira API com Flask já está rodando!
Construindo um CRUD completo
Um CRUD (Create, Read, Update, Delete) é a espinha dorsal de muitas aplicações web e APIs. Ele permite gerenciar dados de maneira completa: criar, ler, atualizar e excluir. Vamos criar um CRUD simples para gerenciar tarefas.
Implementando o CREATE
O CREATE é responsável por adicionar novos registros ao sistema. No Flask, utilizamos o método HTTP POST para isso. Adicione o seguinte código ao seu
app.py
:from flask import request, jsonify tasks = [] # Lista para armazenar as tarefas task_id_control = 1 # Controlador de IDs para garantir unicidade @app.route("/tasks", methods=["POST"]) def create_task(): global task_id_control data = request.get_json() # Pega os dados enviados no corpo da requisição new_task = { "id": task_id_control, "title": data.get("title"), # Obtém o título enviado "description": data.get("description", ""), # Descrição opcional "completed": False # Define que a tarefa começa como incompleta } tasks.append(new_task) # Adiciona a nova tarefa à lista task_id_control += 1 # Incrementa o ID para a próxima tarefa return jsonify({"message": "Tarefa criada com sucesso!", "task": new_task}), 201
Testando o CREATE
- Configure uma requisição POST para o endpoint (rota)
/tasks
.
- Envie o seguinte JSON no corpo da requisição:
{ "title": "Aprender Flask", "description": "Estudar a criação de APIs" }
A resposta da API será:
{ "message": "Tarefa criada com sucesso!", "task": { "id": 1, "title": "Aprender Flask", "description": "Estudar a criação de APIs", "completed": false} }
Pronto! Você acabou de criar seu primeiro registro no sistema.
Implementando o READ
Agora, vamos implementar o READ. Ele permite listar todas as tarefas ou buscar uma tarefa específica pelo ID. Adicione os métodos GET ao
app.py
:@app.route("/tasks", methods=["GET"]) def get_tasks(): return jsonify({"tasks": tasks, "total": len(tasks)}) @app.route("/tasks/<int:task_id>", methods=["GET"]) def get_task(task_id): # Procura a tarefa pelo ID task = next((t for t in tasks if t["id"] == task_id), None) if not task: return jsonify({"message": "Tarefa não encontrada"}), 404 return jsonify(task)
Testando o READ
- Para listar todas as tarefas, configure uma requisição GET para
/tasks
.
- Para buscar uma tarefa específica, use GET com
/tasks/<ID>
. Por exemplo,/tasks/1
retornará:
{ "id": 1, "title": "Aprender Flask", "description": "Estudar a criação de APIs", "completed": false }
Caso o ID não exista, a resposta será:
{ "message": "Tarefa não encontrada" }
Implementando o UPDATE
O método PUT permite atualizar uma tarefa existente. Adicione o seguinte ao
app.py
:@app.route("/tasks/<int:task_id>", methods=["PUT"]) def update_task(task_id): task = next((t for t in tasks if t["id"] == task_id), None) if not task: return jsonify({"message": "Tarefa não encontrada"}), 404 data = request.get_json() # Atualiza os campos da tarefa com os dados enviados task["title"] = data.get("title", task["title"]) task["description"] = data.get("description", task["description"]) task["completed"] = data.get("completed", task["completed"]) return jsonify({"message": "Tarefa atualizada com sucesso!", "task": task})
Testando o UPDATE
- Configure uma requisição PUT para
/tasks/<ID>
.
- Envie o seguinte JSON no corpo da requisição:
{ "title": "Aprender Flask e APIs", "description": "Aprofundar nos conceitos", "completed": true }
A resposta será:
{ "message": "Tarefa atualizada com sucesso!", "task": { "id": 1, "title": "Aprender Flask e APIs", "description": "Aprofundar nos conceitos", "completed": true} }
Implementando o DELETE
Finalmente, vamos implementar o DELETE para remover tarefas. Adicione este código ao
app.py
:@app.route("/tasks/<int:task_id>", methods=["DELETE"]) def delete_task(task_id): global tasks task = next((t for t in tasks if t["id"] == task_id), None) if not task: return jsonify({"message": "Tarefa não encontrada"}), 404 tasks = [t for t in tasks if t["id"] != task_id] return jsonify({"message": "Tarefa deletada com sucesso!"})
Testando o DELETE
- Configure uma requisição DELETE para
/tasks/<ID>
.
- Após enviar, a resposta será:
{ "message": "Tarefa deletada com sucesso!" } // Caso o ID não exista, a resposta será: { "message": "Tarefa não encontrada" }
Você acabou de criar um CRUD completo usando Flask! Que tal explorar mais sobre APIs REST, segurança ou até integrar sua API com um front-end? As possibilidades são infinitas, e você já deu o primeiro passo para se tornar um mestre em desenvolvimento de APIs.
Alternativas para testar sua API
Após implementar o CRUD, você está pronto para testar seu endpoint. Ferramentas como Postman e Insomnia são amplamente utilizadas para este propósito. No entanto, existem outras opções que podem facilitar sua vida e trazer uma experiência mais simples e integrada. Vamos explorar algumas delas!
Conheça o Thunder Client
Se você é fã do Visual Studio Code (VS Code), o Thunder Client pode ser uma excelente escolha. Ele é uma extensão que traz a funcionalidade de um cliente de API diretamente para o editor. Isso significa que você pode testar suas requisições sem sair do VS Code.
Como usar o Thunder Client:
### Como usar o Thunder Client: 1. Instale a extensão **Thunder Client** no marketplace do VS Code. 2. Abra o painel do Thunder Client clicando no ícone correspondente na barra lateral. 3. Clique em **"New Request"** para criar uma nova requisição. 4. Selecione o método **POST**, insira a URL `http://localhost:5000/tasks` e, na aba **Body**, escolha o tipo **JSON**. 5. Insira o seguinte conteúdo no corpo da requisição: ```json { "title": "Aprender Flask", "description": "Estudar a criação de APIs" } ``` 6. Clique em **Send** e veja a resposta diretamente no editor.
O Thunder Client é leve, fácil de usar e permite salvar suas requisições no repositório Git, facilitando a colaboração em equipe.
Testando APIs diretamente no terminal
Outra alternativa é o HTTPie, uma ferramenta poderosa para testar APIs diretamente pelo terminal. Com ele, você pode criar e enviar requisições HTTP rapidamente, sem a necessidade de uma interface gráfica.
Como Usar o HTTPie:
- Instale o HTTPie no terminal com:
pip install httpie
- Envie uma requisição para testar seu endpoint CREATE:
http POST http://localhost:5000/tasks title="Aprender Flask" description="Estudar a criação de APIs"
- Veja a resposta estruturada diretamente no terminal.
O HTTPie é uma solução perfeita para quem gosta de trabalhar no terminal, mantendo o foco no código e economizando recursos do sistema.
Outras ferramentas e alternativas
Além dessas, você pode explorar outras opções como:
- Rest Client Extension: Permite testar APIs diretamente no VSCode em um formato visual e salvar as requisições no seu projeto.
- Hoppscotch: Uma alternativa online para o Postman, ideal para testes rápidos.
Se você quer ver essas ferramentas em ação e aprender mais sobre como utilizá-las, confira o vídeo abaixo. Ele apresenta as vantagens de cada uma e mostra como usá-las para otimizar seus testes:
Dicas de boas práticas com Flask
Criar APIs com Flask é uma experiência poderosa e empolgante, mas para garantir que sua aplicação seja robusta, escalável e fácil de manter, é essencial seguir algumas boas práticas. Aqui estão algumas dicas para você brilhar no desenvolvimento:
Validação de dados
Certifique-se de validar todos os dados recebidos pelo servidor. Isso evita falhas e vulnerabilidades no seu sistema, como injeções ou dados corrompidos. Ferramentas como Marshmallow ou Pydantic podem ajudar a estruturar e validar os dados facilmente. Um exemplo básico seria:
from flask import request, jsonify @app.route("/tasks", methods=["POST"]) def create_task(): data = request.get_json() if not data.get("title"): return jsonify({"error": "O campo 'title' é obrigatório!"}), 400 # Continuação do código...
Quer entender melhor como organizar e validar dados para análises? Confira nosso artigo completo sobre coleta e organização de dados com Pandas e leve seus projetos para o próximo nível!
2. Documentação
Uma API bem documentada é essencial para que desenvolvedores possam entendê-la e integrá-la facilmente. Aqui estão algumas ferramentas que você pode usar:
- Swagger: Crie uma interface visual para sua API com descrições detalhadas.
- Postman: Além de testar endpoints, documente e exporte coleções para outros desenvolvedores.
Com uma boa documentação, você transforma sua API em uma ferramenta acessível e pronta para a colaboração.
Ambos os vídeos mostram como elevar a qualidade da sua documentação com exemplos práticos.
3. Persistência de dados
Armazenar dados em memória pode ser útil para protótipos ou aprendizado, mas não é ideal para aplicações reais. Para uma solução mais robusta, use bancos de dados como:
- SQLite: Leve e ideal para aplicações pequenas ou aprendizado.
- PostgreSQL: Uma solução mais avançada e poderosa para projetos maiores.
- SQLAlchemy: Um ORM (Object-Relational Mapper) para facilitar a interação com bancos de dados no Flask.
Por exemplo, integrando o SQLAlchemy:
from flask_sqlalchemy import SQLAlchemy app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///tasks.db' db = SQLAlchemy(app) class Task(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(80), nullable=False) description = db.Column(db.String(200), nullable=True) completed = db.Column(db.Boolean, default=False)
Para aprender mais sobre bancos de dados e como transformar dados em insights valiosos, confira nosso artigo sobre SQL.
Próximos passos: levando sua API para o próximo nível
Agora que você dominou o básico, está na hora de explorar funcionalidades mais avançadas e tornar sua API ainda mais profissional. Confira alguns desafios emocionantes para sua jornada:
Autenticação e segurança
Proteja sua API com JWT (JSON Web Tokens). Ele permite que você autentique usuários de forma segura e eficiente, garantindo que apenas pessoas autorizadas acessem seus recursos. Você pode usar bibliotecas como PyJWT para facilitar a implementação.
from flask_jwt_extended import JWTManager app.config['JWT_SECRET_KEY'] = 'sua_chave_secreta' jwt = JWTManager(app)
Confira nosso artigo completo sobre como implementar autenticação JWT em APIs Flask.
Deploy: torne sua API pública
Chegou a hora de compartilhar sua API com o mundo! Escolha um serviço de deploy e publique seu projeto:
- Heroku: Simples e gratuito para começar.
- AWS: Para projetos de maior escala.
- Render: Fácil de usar e com boas opções para aplicações Flask.
Com isso, sua API estará disponível para qualquer usuário ou aplicação que precise dela.
Testes automatizados
Garanta a qualidade do código implementando testes automatizados. Bibliotecas como unittest ou pytest são suas melhores amigas para criar casos de teste que validam o comportamento da API e previnem regressões.
def test_create_task(client): response = client.post('/tasks', json={"title": "Test Task"}) assert response.status_code == 201 assert response.get_json()["task"]["title"] == "Test Task"
Conclusão
Parabéns! Você deu um grande passo ao criar sua primeira API com Flask. Este é apenas o começo da sua jornada no mundo do desenvolvimento web, mas já mostra que você está no caminho certo para construir aplicações modernas, robustas e escaláveis.
O que você aprendeu aqui é a base para explorar um universo de possibilidades, desde a criação de APIs avançadas até o desenvolvimento de sistemas completos. Continue experimentando, aprendendo e codando. O mais importante é nunca parar de evoluir.
Aprofunde-se e vá além!
A Rocketseat está ao seu lado para transformar o conhecimento em impacto. Confira esses recursos incríveis que preparamos para você:
- Curso gratuito de introdução ao Python
Pronto para colocar a mão na massa? Nesse curso gratuito, você aprenderá a criar uma API que simula um sistema de e-commerce, desde a criação de rotas até a autenticação de usuários e integração com banco de dados. Um excelente ponto de partida para sua jornada com Flask e desenvolvimento web.
- Guia sobre a Sintaxe do Python
Python é conhecido por sua sintaxe simples e legível, perfeita para iniciantes. Baixe gratuitamente este guia prático e tenha em mãos uma referência essencial para impulsionar seu aprendizado.
- Formação em Python
Quer se tornar um especialista em Python? Com projetos reais e um certificado validado pelo mercado, essa formação é ideal para quem quer criar aplicações completas e profissionais. Domine as principais ferramentas como Flask, Redis, MongoDB e muito mais. Conheça os planos e comece agora.
Agora que você tem a base, o céu é o limite. Continue explorando, criando e moldando o futuro com código. A Rocketseat está aqui para te apoiar em cada etapa dessa jornada. Até a próxima e bons códigos!