Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Uma API (Application Programming Interface) é uma interface que permite que as aplicações se comuniquem entre si. Uma API RESTful é uma API que segue o estilo arquitetural REST (Representational State Transfer), que é um conjunto de princípios que definem como as aplicações devem se comunicar via HTTP. Neste artigo, vamos ver como criar uma API REST em Python usando a biblioteca Flask.
Antes de começar, é preciso ter o Python instalado no seu sistema e ter conhecimentos básicos de programação em Python. Além disso, vamos usar o Flask para criar a aplicação e Flask-RESTful para criar os recursos da API. Execute o seguinte comando no terminal para instalar as dependências:
pip install flask flask-restful
ShellScriptO primeiro passo é criar um arquivo chamado app.py e importar a biblioteca Flask:
from flask import Flask
app = Flask(__name__)
app.pyPara criar um recurso, crie uma classe que herda de flask_restful.Resource. Em seguida, implemente os métodos HTTP necessários (GET, POST, PUT, DELETE, etc.).
No exemplo abaixo, estamos criando um recurso chamado HelloWorld que responde a uma requisição GET com a mensagem “Hello, World!”.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
app.pyPor fim, precisamos rodar a aplicação. Para isso, basta adicionar o seguinte código ao final do arquivo:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__': app.run(debug=True)
app.pyO parâmetro debug=True ativa o modo de debug, que é útil durante o desenvolvimento. Para rodar a aplicação, basta executar o comando python app.py no terminal.
O código construido define um endpoint para a rota raiz (/) da aplicação Flask. Quando um cliente fizer uma requisição HTTP GET para essa rota, o método hello_world
será executado e retornará a mensagem “Hello, World!” como resposta.
Para testar a API, basta salvar o código acima em um arquivo chamado app.py
e executá-lo com o comando python app.py
no terminal. Em seguida, a API estará disponível em http://localhost:5000
e, ao acessar essa URL em um navegador ou fazer uma requisição HTTP GET com outra ferramenta, como o curl
, a mensagem “Hello, World!” será retornada.
Agora vamos demonstrar um exemplo um pouco mais completo sobre como criar alguns recursos na API REST, como não estamos acessando nenhuma banco de dados vamos configurar uma lista de recursos para que seja possível fazer todas as operações comum de uma API, segue o exemplo:
from flask import Flask, jsonify, request
app = Flask(__name__)
# Dados de exemplo para a API
livros = [
{'id': 1, 'titulo': 'O Hobbit', 'autor': 'J.R.R. Tolkien'},
{'id': 2, 'titulo': 'A Guerra dos Tronos', 'autor': 'George R. R. Martin'},
{'id': 3, 'titulo': 'O Senhor dos Anéis', 'autor': 'J.R.R. Tolkien'}
]
# Endpoint para listar todos os livros
@app.route('/livros', methods=['GET'])
def listar_livros():
return jsonify(livros)
# Endpoint para obter um livro específico pelo ID
@app.route('/livros/<int:livro_id>', methods=['GET'])
def obter_livro(livro_id):
livro = [livro for livro in livros if livro['id'] == livro_id]
if len(livro) == 0:
return jsonify({'erro': 'Livro não encontrado'}), 404
return jsonify(livro[0])
# Endpoint para adicionar um novo livro
@app.route('/livros', methods=['POST'])
def adicionar_livro():
livro = {
'id': livros[-1]['id'] + 1,
'titulo': request.json['titulo'],
'autor': request.json['autor']
}
livros.append(livro)
return jsonify(livro), 201
# Endpoint para atualizar um livro existente pelo ID
@app.route('/livros/<int:livro_id>', methods=['PUT'])
def atualizar_livro(livro_id):
livro = [livro for livro in livros if livro['id'] == livro_id]
if len(livro) == 0:
return jsonify({'erro': 'Livro não encontrado'}), 404
livro[0]['titulo'] = request.json.get('titulo', livro[0]['titulo'])
livro[0]['autor'] = request.json.get('autor', livro[0]['autor'])
return jsonify(livro[0])
# Endpoint para deletar um livro existente pelo ID
@app.route('/livros/<int:livro_id>', methods=['DELETE'])
def deletar_livro(livro_id):
livro = [livro for livro in livros if livro['id'] == livro_id]
if len(livro) == 0:
return jsonify({'erro': 'Livro não encontrado'}), 404
livros.remove(livro[0])
return jsonify({'resultado': True})
if __name__ == '__main__':
app.run(debug=True)
app,pyEste exemplo define uma API REST simples para gerenciar uma lista de livros. Os endpoints disponíveis permitem listar todos os livros, obter um livro específico pelo ID, adicionar um novo livro, atualizar um livro existente e deletar um livro existente.
Para executar este exemplo, salve o código acima em um arquivo chamado app.py
e execute o comando python app.py
no terminal. Em seguida, a API estará disponível em http://localhost:5000
.
Neste artigo, vimos como criar uma API RESTful em Python usando a biblioteca Flask. Criamos um recurso simples que responde a uma requisição GET com a mensagem “Hello, World!”. Agora você pode adicionar mais recursos à sua API e implementar a lógica necessária para atender aos requisitos do seu projeto. A Flask e a Flask-RESTful são ferramentas poderosas e fáceis de usar para criar APIs RESTful em Python.