Esta 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.
- Python 3.x
- Pip (gerenciador de pacotes do Python)
- SQLite
-
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_URIno 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.envcom as seguintes variáveis:SECRET_KEY='minha_chave_secreta' -
Execute a aplicação:
python run.pyA API estará disponível em
http://127.0.0.1:5000.
- Login:
POST /login- Body (JSON):
{ "username": "admin", "password": "senha654321" } - Retorna um token JWT que deve ser usado para acessar os outros endpoints.
- Body (JSON):
-
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:
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.
Você pode testar a API usando Postman, cURL, ou a interface do Swagger.
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"
}'
- 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 arquivo
config.pye ajuste o URI de conexão de acordo com o banco de dados desejado.