https://github.com/marcoscapiberibe/crud_flask
CRUD com Flask
https://github.com/marcoscapiberibe/crud_flask
Last synced: 3 months ago
JSON representation
CRUD com Flask
- Host: GitHub
- URL: https://github.com/marcoscapiberibe/crud_flask
- Owner: marcoscapiberibe
- License: mit
- Created: 2024-09-03T23:58:09.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-09-09T01:02:50.000Z (9 months ago)
- Last Synced: 2025-01-12T17:47:55.847Z (5 months ago)
- Language: Python
- Size: 83 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
API de Cadastro de EmpresasEsta API RESTful foi desenvolvida para o gerenciamento de empresas, utilizando Flask, JWT para autenticação, SQLAlchemy para integração com um banco de dados relacional e Swagger para documentação dos endpoints.
Requisitos
- Python 3.x
-
Pip (gerenciador de pacotes do Python) - SQLite
Instalação
-
Clone o repositório:
git clone https://github.com/marcoscapiberibe/CRUD_Flask.git
cd CRUD_Flask -
Crie e ative um ambiente virtual:
python3 -m venv env
source env/bin/activate -
Instale as dependências:
pip3 install -r requirements.txt
-
Instale mais essas dependências:
pip3 install flask flask-cors flask-migrate flask_swagger_ui marshmallow PyJWT
-
Configure o banco de dados:
O projeto usa SQLite por padrão. Se desejar usar PostgreSQL ou MySQL, configure a variávelSQLALCHEMY_DATABASE_URI
no arquivoconfig.py
.Para criar o banco de dados e aplicar as migrações, execute:
flask db upgrade
-
Configure as variáveis de ambiente (necessário caso a API não rode de primeira; caso contrário, você pode ignorar esta etapa):
Crie um arquivo.env
com as seguintes variáveis:SECRET_KEY='minha_chave_secreta'
-
Execute a aplicação:
python run.py
A API estará disponível em
http://127.0.0.1:5000
.
Endpoints
Autenticação
-
Login:POST /login
- Body (JSON):
{
"username": "admin",
"password": "senha654321"
} - Retorna um token JWT que deve ser usado para acessar os outros endpoints.
- Body (JSON):
Empresas
-
Criar Empresa:
POST /empresa
- Header:
Authorization: Bearer <SEU_TOKEN_JWT>
- Body (JSON):
{
"cnpj": "00000000000100",
"nome_razao": "Empresa Exemplo S.A.",
"nome_fantasia": "Exemplo",
"cnae": "6201502"
}
- Header:
-
Listar Empresas (com paginação):
GET /empresas?start=0&limit=10&sort=nome_razao&dir=asc
-
Atualizar Empresa:
PUT /empresa/<cnpj>
- Header:
Authorization: Bearer <SEU_TOKEN_JWT>
- Body (JSON):
{
"nome_fantasia": "Novo Nome Fantasia",
"cnae": "6201502"
}
- Header:
-
Deletar Empresa:
DELETE /empresa/<cnpj>
- Header:
Authorization: Bearer <SEU_TOKEN_JWT>
- Header:
Documentação Swagger
A API possui uma documentação interativa via Swagger, que permite visualizar e testar todos os endpoints diretamente no navegador.
-
Após iniciar a aplicação, acesse a documentação Swagger em:
http://127.0.0.1:5000/swagger/
-
No Swagger, você pode testar diretamente os endpoints fornecendo o token JWT de autenticação.
- Para testar os endpoints protegidos, faça login e copie o token JWT retornado.
- No Swagger, clique em Authorize e cole o token no formato:
Bearer <SEU_TOKEN_JWT>
. - Agora você pode executar as operações CRUD diretamente pela interface do Swagger.
Testando a API
Você pode testar a API usando Postman, cURL, ou a interface do Swagger.
Exemplo de cURL para Criar uma Empresa:
curl -X POST http://127.0.0.1:5000/empresa \
-H "Authorization: Bearer <SEU_TOKEN_JWT>" \
-H "Content-Type: application/json" \
-d '{
"cnpj": "00000000000100",
"nome_razao": "Empresa Exemplo",
"nome_fantasia": "Exemplo",
"cnae": "6201502"
}'
Considerações Importantes
-
JWT: Todos os endpoints de CRUD (criar, atualizar, deletar empresas) exigem um token JWT para autenticação. -
Documentação Swagger: A interface do Swagger facilita o teste de todos os endpoints de maneira interativa. -
Banco de Dados: Para alterar o banco de dados de SQLite para PostgreSQL ou MySQL, modifique a configuração no arquivoconfig.py
e ajuste o URI de conexão de acordo com o banco de dados desejado.