Skip to content

marcoscapiberibe/CRUD_Flask

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API de Cadastro de Empresas

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.

Requisitos

  • Python 3.x
  • Pip (gerenciador de pacotes do Python)
  • SQLite

Instalação

  1. Clone o repositório:

    git clone https://github.com/marcoscapiberibe/CRUD_Flask.git
    cd CRUD_Flask
    
  2. Crie e ative um ambiente virtual:

    python3 -m venv env
    source env/bin/activate
    
  3. Instale as dependências:

    pip3 install -r requirements.txt
    
  4. Instale mais essas dependências:

    pip3 install flask flask-cors flask-migrate flask_swagger_ui marshmallow PyJWT
    
  5. Configure o banco de dados:
    O projeto usa SQLite por padrão. Se desejar usar PostgreSQL ou MySQL, configure a variável SQLALCHEMY_DATABASE_URI no arquivo config.py.

    Para criar o banco de dados e aplicar as migrações, execute:

    flask db upgrade
    
  6. 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'
    
  7. 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.

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"
      }
      
  • 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"
      }
      
  • Deletar Empresa: DELETE /empresa/<cnpj>

    • Header:
      Authorization: Bearer <SEU_TOKEN_JWT>
      

Documentação Swagger

A API possui uma documentação interativa via Swagger, que permite visualizar e testar todos os endpoints diretamente no navegador.

  1. Após iniciar a aplicação, acesse a documentação Swagger em:

    http://127.0.0.1:5000/swagger/
    
  2. 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 arquivo config.py e ajuste o URI de conexão de acordo com o banco de dados desejado.

About

CRUD com Flask

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors