Lädt...


🔧 Como Criar APIs RESTful com Flask e Python


Nachrichtenbereich: 🔧 Programmierung
🔗 Quelle: dev.to

APIs RESTful são essenciais no desenvolvimento moderno, permitindo que diferentes sistemas se comuniquem de forma eficiente e escalável. Python, com seu framework Flask, oferece uma abordagem simples e poderosa para criar APIs. Neste guia, vamos explorar como criar uma API RESTful utilizando Flask, cobrindo desde os conceitos básicos até autenticação e consumo com clientes HTTP.

O que é uma API RESTful?

Antes de começarmos com o código, é importante entender o que é uma API RESTful. API (Application Programming Interface) é um conjunto de regras que permitem que um software se comunique com outro. O estilo REST (Representational State Transfer) define um conjunto de princípios que a API deve seguir:

  • Client-Server: Separação entre o cliente (quem consome a API) e o servidor (quem fornece os dados).
  • Stateless: Cada requisição feita pelo cliente deve conter todas as informações necessárias para o servidor processar.
  • Cacheable: As respostas da API podem ser cacheadas para melhorar o desempenho.
  • Uniform Interface: A comunicação entre cliente e servidor deve ser feita de maneira padronizada, usando métodos HTTP como GET, POST, PUT e DELETE.

Criando uma API RESTful com Flask

Vamos agora criar uma API simples que gerencia uma lista de usuários. A API permitirá adicionar, editar, visualizar e excluir usuários.

1. Instalando o Flask

Primeiro, certifique-se de ter o Flask instalado. Caso não tenha, você pode instalá-lo usando o pip:

pip install Flask

2. Estrutura do Projeto

Nosso projeto terá a seguinte estrutura:

/api_flask
│
├── app.py
└── requirements.txt

3. Configurando o Flask

No arquivo app.py, começamos importando as bibliotecas necessárias e configurando nossa aplicação Flask:

from flask import Flask, jsonify, request

app = Flask(__name__)

# Dados simulados
users = [
    {'id': 1, 'name': 'Alice', 'email': '[email protected]'},
    {'id': 2, 'name': 'Bob', 'email': '[email protected]'}
]

4. Criando Endpoints

Agora, vamos criar nossos endpoints para visualizar, adicionar, atualizar e deletar usuários.

4.1. Endpoint para Listar Usuários

Usaremos o método GET para listar todos os usuários:

@app.route('/users', methods=['GET'])
def get_users():
    return jsonify(users), 200

4.2. Endpoint para Obter um Usuário Específico

Usaremos o método GET com o ID do usuário para obter detalhes de um usuário específico:

@app.route('/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
    user = next((user for user in users if user['id'] == user_id), None)
    if user:
        return jsonify(user), 200
    else:
        return jsonify({'message': 'User not found'}), 404

4.3. Endpoint para Criar um Novo Usuário

O método POST será usado para adicionar um novo usuário. O cliente enviará os dados em formato JSON.

@app.route('/users', methods=['POST'])
def create_user():
    data = request.get_json()
    new_user = {
        'id': len(users) + 1,
        'name': data['name'],
        'email': data['email']
    }
    users.append(new_user)
    return jsonify(new_user), 201

4.4. Endpoint para Atualizar um Usuário

Aqui, usamos o método PUT para atualizar os dados de um usuário existente:

@app.route('/users/<int:user_id>', methods=['PUT'])
def update_user(user_id):
    data = request.get_json()
    user = next((user for user in users if user['id'] == user_id), None)
    if user:
        user['name'] = data['name']
        user['email'] = data['email']
        return jsonify(user), 200
    else:
        return jsonify({'message': 'User not found'}), 404

4.5. Endpoint para Deletar um Usuário

Usamos o método DELETE para remover um usuário:

@app.route('/users/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
    global users
    users = [user for user in users if user['id'] != user_id]
    return jsonify({'message': 'User deleted'}), 200

5. Rodando a API

Agora, basta rodar nossa aplicação:

if __name__ == '__main__':
    app.run(debug=True)

Executando o arquivo app.py, nossa API estará disponível em http://127.0.0.1:5000/users.

6. Autenticação com Flask

Para adicionar uma camada de segurança à nossa API, podemos usar JWT (JSON Web Token). Com JWT, podemos garantir que apenas usuários autenticados possam acessar certos endpoints.

6.1. Instalando o Flask-JWT-Extended

Instale a extensão necessária:

pip install Flask-JWT-Extended

6.2. Configurando o JWT

Atualize seu arquivo app.py para incluir autenticação JWT:

from flask_jwt_extended import JWTManager, create_access_token, jwt_required

app.config['JWT_SECRET_KEY'] = 'your-secret-key'  # Troque pela sua chave secreta
jwt = JWTManager(app)

# Login para obter o token
@app.route('/login', methods=['POST'])
def login():
    data = request.get_json()
    if data['username'] == 'admin' and data['password'] == 'admin':
        access_token = create_access_token(identity={'username': 'admin'})
        return jsonify(access_token=access_token), 200
    else:
        return jsonify({'message': 'Invalid credentials'}), 401

# Exemplo de endpoint protegido
@app.route('/protected', methods=['GET'])
@jwt_required()
def protected():
    return jsonify({'message': 'Access granted to protected endpoint'}), 200

Agora, ao acessar o endpoint /protected, será necessário enviar o token JWT no cabeçalho da requisição para autenticar o usuário.

7. Consumindo a API com Cliente HTTP

Para consumir a API, podemos usar ferramentas como Postman ou bibliotecas como requests no Python.

Exemplo de como consumir a API usando requests:

import requests

# Consumindo o endpoint de listagem de usuários
response = requests.get('http://127.0.0.1:5000/users')
print(response.json())

Conclusão

Criar uma API RESTful com Flask é direto e flexível. Flask oferece uma estrutura minimalista que pode ser expandida para incluir funcionalidades como autenticação, manipulação de erros e outras camadas de segurança. Ao seguir os princípios do REST e boas práticas de desenvolvimento, é possível construir APIs eficientes e escaláveis com Python.

Agora você pode construir sua própria API RESTful com Flask, personalizando conforme suas necessidades e requisitos.

...

🔧 Como Criar APIs RESTful com Flask e Python


📈 76.99 Punkte
🔧 Programmierung

🔧 Middleware no Lithe: Como Funciona e Como Criar o Seu Próprio


📈 44.8 Punkte
🔧 Programmierung

🔧 Dive Into the World of RESTful Web APIs with Python and Flask! 🚀


📈 43.9 Punkte
🔧 Programmierung

📰 heise+ | RESTful-APIs mit Python und Flask entwickeln


📈 43.9 Punkte
📰 IT Nachrichten

🔧 Building RESTful APIs with Flask


📈 38.61 Punkte
🔧 Programmierung

🔧 Flask Essentials: Data Validation, Database Connectivity, and Crafting RESTful APIs


📈 38.61 Punkte
🔧 Programmierung

🔧 Building a RESTful API with Flask in Python: A Beginner's Guide


📈 34.86 Punkte
🔧 Programmierung

📰 Python And Flask Bootcamp: Create Websites Using Flask!


📈 33.44 Punkte
📰 Alle Kategorien

🍏 Como criar um GIF em qualquer Mac da maneira certa


📈 33.08 Punkte
🍏 iOS / Mac OS

🔧 Como Criar e Gerenciar Seu Próprio Repositório Git em um Servidor Particular


📈 33.08 Punkte
🔧 Programmierung

🔧 Como criar e hospedar um site de documentação para o seu projeto usando Hugo e Netlify


📈 33.08 Punkte
🔧 Programmierung

🔧 Como Utilizar IA Generativa do Google Cloud com Vertex AI para Criar um Projeto Simples


📈 33.08 Punkte
🔧 Programmierung

🔧 Como Criar sua Primeira Aplicação com Lithe


📈 33.08 Punkte
🔧 Programmierung

🔧 Como criar um Repository Genérico em Golang?


📈 33.08 Punkte
🔧 Programmierung

🔧 Como Criar e Publicar Pacotes TypeScript no NPM


📈 33.08 Punkte
🔧 Programmierung

🔧 Go + Docker: Como criar as melhores imagens Docker para aplicações Golang


📈 33.08 Punkte
🔧 Programmierung

🔧 Go, Gemini e Alexa: Como criar automações para o seu dia a dia


📈 33.08 Punkte
🔧 Programmierung

🔧 Como usamos tunelamento de rede para criar um servidor de minecraft.


📈 33.08 Punkte
🔧 Programmierung

🔧 Como criar um Load Balancer no Microsoft Azure


📈 33.08 Punkte
🔧 Programmierung

🔧 SQL Server + Docker Compose: como criar e popular bancos de dados ao inicializar os containers


📈 33.08 Punkte
🔧 Programmierung

🔧 Testando das trincheiras: Como criar mocks e stubs dinâmico com mockito em java


📈 33.08 Punkte
🔧 Programmierung

🔧 Como criar uma conta gratuita no Microsoft Azure


📈 33.08 Punkte
🔧 Programmierung

🔧 Como criar um plano de carreira: Um guia completo


📈 33.08 Punkte
🔧 Programmierung

🔧 Como criar um emulador de jogos


📈 33.08 Punkte
🔧 Programmierung

🔧 Como criar uma automação com aws lambda e serverless framework


📈 33.08 Punkte
🔧 Programmierung

🔧 Como criar um bot do discord com javascript


📈 33.08 Punkte
🔧 Programmierung

🔧 Como criar um Servidor Web Java Sem Framework


📈 33.08 Punkte
🔧 Programmierung

🔧 Como criar API com PHP Puro?


📈 33.08 Punkte
🔧 Programmierung

🔧 Como criar requisição de Crud Básico em Javascript usando Fetch API


📈 33.08 Punkte
🔧 Programmierung

🔧 Como Criar Componentes Globais e Dinâmicos com Strategy Pattern em React


📈 33.08 Punkte
🔧 Programmierung

🔧 Frontend and Backend Integration with RESTful APIs in Python and Django


📈 29.83 Punkte
🔧 Programmierung

🔧 Build User login/signup & RESTful APIs in 100 lines of Python


📈 29.83 Punkte
🔧 Programmierung

matomo