Construção de um endpoint REST
Retorne respostas JSON
Construção de um endpoint REST é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.
O que é uma API REST?
Uma API REST disponibiliza recursos por HTTP usando verbos padrão. Em vez de páginas HTML, ela retorna dados, geralmente como JSON, para serem consumidos por outros programas.
from flask import Flask, jsonify
app = Flask(__name__)
# REST endpoints return data, not pages
print('REST APIs speak JSON over HTTP')Retornando JSON
jsonify() transforma um dicionário ou uma lista Python em uma resposta JSON com o tipo de conteúdo correto.
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/api/status')
def status():
return jsonify({'status': 'ok'})
print('jsonify builds a JSON response')Conversão automática de dicionários
O Flask moderno também converte automaticamente um dicionário retornado em JSON, portanto muitas vezes você pode dispensar jsonify().
from flask import Flask
app = Flask(__name__)
@app.route('/api/ping')
def ping():
return {'message': 'pong'}
print('Returning a dict yields JSON')Retornando uma lista
Para retornar uma coleção, passe uma lista para jsonify(). Cada item geralmente é um dicionário que representa um recurso.
from flask import Flask, jsonify
app = Flask(__name__)
books = [{'id': 1, 'title': 'A'}, {'id': 2, 'title': 'B'}]
@app.route('/api/books')
def list_books():
return jsonify(books)
print('Return a list of resources')GET de um recurso
Use uma parte dinâmica da URL para buscar um único item pelo identificador. Retorne 404 se ele não existir.
from flask import Flask, jsonify
app = Flask(__name__)
books = {1: {'id': 1, 'title': 'A'}}
@app.route('/api/books/<int:bid>')
def get_book(bid):
book = books.get(bid)
if book is None:
return jsonify({'error': 'not found'}), 404
return jsonify(book)
print('GET /api/books/1')Criando com POST
Uma solicitação POST cria um recurso. Leia o corpo JSON, crie o novo item e retorne-o com o status 201 Criado.
from flask import Flask, request, jsonify
app = Flask(__name__)
books = []
@app.route('/api/books', methods=['POST'])
def create_book():
data = request.get_json()
book = {'id': len(books) + 1, 'title': data['title']}
books.append(book)
return jsonify(book), 201
print('POST creates and returns 201')Atualizando com PUT
PUT substitui ou atualiza um recurso existente identificado pelo seu identificador.
from flask import Flask, request, jsonify
app = Flask(__name__)
books = {1: {'id': 1, 'title': 'A'}}
@app.route('/api/books/<int:bid>', methods=['PUT'])
def update_book(bid):
if bid not in books:
return jsonify({'error': 'not found'}), 404
books[bid]['title'] = request.get_json()['title']
return jsonify(books[bid])
print('PUT updates a resource')Excluindo com DELETE
DELETE remove um recurso. Retornar o status 204 Sem conteúdo é comum quando a operação tem sucesso.
from flask import Flask, jsonify
app = Flask(__name__)
books = {1: {'id': 1, 'title': 'A'}}
@app.route('/api/books/<int:bid>', methods=['DELETE'])
def delete_book(bid):
if bid in books:
del books[bid]
return '', 204
return jsonify({'error': 'not found'}), 404
print('DELETE removes a resource')Os códigos de status são importantes
O REST depende de códigos de status HTTP: 200 OK, 201 Criado, 204 Sem conteúdo, 400 Solicitação inválida, 404 Não encontrado.
# 200 success
# 201 created
# 204 no content
# 400 bad request
# 404 not found
print('Use the right status code')Validando o corpo
Verifique se os campos obrigatórios estão presentes antes de criar o recurso. Retorne 400 com uma mensagem de erro quando o corpo for inválido.
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/api/books', methods=['POST'])
def create_book():
data = request.get_json(silent=True) or {}
if 'title' not in data:
return jsonify({'error': 'title required'}), 400
return jsonify(data), 201
print('Validate JSON before using it')Respostas consistentes
APIs bem projetadas retornam uma estrutura previsível, geralmente envolvendo dados e erros da mesma maneira todas as vezes para que os clientes possam confiar nela.
from flask import jsonify
# Success: {'data': {...}}
# Error: {'error': 'message'}
# Keep the shape consistent across endpoints
print('Predictable shapes help clients')Verificação rápida
Teste seus conhecimentos sobre REST.
Recapitulação
Você criou um ponto de acesso REST que retorna JSON.
jsonify()(ou um dicionário retornado) produz respostas JSON- Associe os verbos HTTP: GET lê, POST cria, PUT atualiza, DELETE remove
- Retorne códigos de status significativos, como 201, 204, 400 e 404
- Valide o corpo da solicitação e mantenha as respostas consistentes
Perguntas Frequentes
A aula “Construção de um endpoint REST” é grátis?
Sim — o texto completo de “Construção de um endpoint REST” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.
O que vou aprender em “Construção de um endpoint REST”?
Retorne respostas JSON Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Python Academy?
Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Construção de um endpoint REST”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Python Academy?
Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Rotas e visualizações
- Modelos com Jinja2
- Formulários e dados da solicitação
- Construção de um endpoint REST