Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jacksonsr451/controle_financeiro
Projeto proposto pela Alura Challend Backend.
https://github.com/jacksonsr451/controle_financeiro
alura alurachallengebackend4 api-rest challenge-backend flask python3
Last synced: 2 days ago
JSON representation
Projeto proposto pela Alura Challend Backend.
- Host: GitHub
- URL: https://github.com/jacksonsr451/controle_financeiro
- Owner: jacksonsr451
- License: mit
- Created: 2022-08-01T14:15:49.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2022-08-20T22:43:07.000Z (about 2 years ago)
- Last Synced: 2023-03-04T19:22:33.394Z (over 1 year ago)
- Topics: alura, alurachallengebackend4, api-rest, challenge-backend, flask, python3
- Language: Python
- Homepage:
- Size: 206 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Controle Financeiro
Projeto proposto pela Alura Challend Backend.
# Utilizando
- Dokerfile: docker
- docker-compose
- Flask
- dynaconf
- Flask-RESTful
- Flask-SQLAlchemy
- Flask-Migrate
- flask-marshmallow
- marshmallow-sqlalchemy
- marshmallow-enum
- Flask-JWT-Extended
- gunicorn
- CLIProjeto bem bacana para se trabalhar, utilizando conseitos de login com jwt. Efetuei o vinculo de usuário a cada um dos modelos através do login, pegando o e-mail e assim tendo o id de usuário para cadastrar cada despesa ou receita.
# Superuser
Para adcionar um superuser, somente rodar o comando no terminal
```shell
flask create-superuser
``````shell
flask create-superuser
Create superuser command
Username: nome-de-usuario
E-Mail: [email protected]
Password: minhaSenha
```# Login
``` http://localhost:5500/api/v1/auth/login ```
```json
{
"email": "[email protected]",
"password": "123456"
}
```caso de sucesso deve se retornar um novo token
```json
{
"token": "eyJ0eXAiOiJAL1QiLCJhbGciOiJIUzI1NiJ9.eyJmcmVzaCI6ZmFsc2UsImlhdCI6MTY2MDc4ODg3NSlkanRpIjoiNzgzNTAyMzYtYzRhYS00NDRmLWE1OGEtOGQwMDliNjFmNzgwIiwidHlaTSI6ImFjY2VzcyIsInN1YiI6eyJlbWFpbCI6ImphY2tzb25zcjQ1MUBnbWFpbC5ja20ifSwibmJmIjoxNjYwNzg4ODc1LCJleHAiOjE2NjA3OTYwNzV9.SgX6-LH4G5lEwGMltxUxi6Zjd80Vn84VPIO10lkq_Ro"
}
```caso de erro
```json
{
"error": "Erro ao tentar login!"
}
```a cada rota da api deve ser entregue o TOKEN meno para cadastro de usuário.
``` Authorization: Bearer meu-token ```
```py
@classmethod
def add_user_id(cls, user_id):
cls.user_id = user_id
return cls
```Assim ao controlador chamar o model é passado a ele o usuário que esta utilizando para efetuar o cadastro de uma receita ou despesa.
```py
from flask_jwt_extended import get_jwt_identitydef meu_controller(self):
user = UserModel.get_user_by_email(email=get_jwt_identity()["email"])DespesasModel.add_user_id(user_id=user.id).add(request=req_request)
ReceitasModel.add_user_id(user_id=user.id).add(request=req_request)
```# Rotas
**Por padrão as Rotas da api se iniciam como** /api/v1
- ```/api/v1/receitas```
- ```/api/v1/receitas?descricao=??```
- ```/api/v1/receitas/```
- ```/api/v1/receitas//```
- ```/api/v1/despesas```
- ```/api/v1/despesas?descricao=??```
- ```/api/v1/despesas/```
- ```/api/v1/despesas//```
- ```/api/v1/resumo//```
- ```/api/v1/usuarios```
- ```/api/v1/usuarios/```
- ```/api/v1/auth/login```### exemplos:
no caso de localhost é porta 5000:
### Adcionar uma receita
- ```http://localhost.5000/api/v1/receitas```
metodo POST com campos obrigatorios (descrição, valor, data), no formato json
```json
{
"descricao": "Minha descrição de receita",
"valor": "1000,00",
"data": "2022-08-02 19:43:10"
}
```caso de SUCESSO
```json
{
"message": "Dados inseridos com sucesso"
}
```caso ERRO
```json
{
"error": "Não é permitido salvar, verifique os dados inseridos e se não são repeditos!"
}
```### Visualizar todas as receita
- ```http://localhost.5000/api/v1/receitas```
metodo GET, visualização em json
caso tenha REGISTROS
```json
[
{
"id": 1,
"descricao": "Minha descrição de receita",
"valor": "1000,00",
"data": "2022-08-02 19:43:10"
},
{
"id": 2,
"descricao": "Minha descrição 2 de receita",
"valor": "1000,00",
"data": "2022-08-02 19:43:10"
}
]
```caso não tenha REGISTOS
```json
{
"error": "Não há registros em receitas"
}
```### Deletar receita
- ```http://localhost.5000/api/v1/receitas/1```
metodo DELETE, visualização em json
caso SUCESSO
```json
{
"message": "Registro deletado com sucesso para o id: 1"
}
```caso ERRO
```json
{
"error": "Registro não existe para este id: 1"
}
```### Visualizar uma receita
- ```http://localhost.5000/api/v1/receitas/1```
metodo GET, visualização em json
```json
{
"id": 1,
"descricao": "Minha descrição de receita",
"valor": "1000,00",
"data": "2022-08-02 19:43:10"
}
```### Atualizar uma receita
- ```http://localhost.5000/api/v1/receitas/1```
metodo PUT com campos obrigatorios (descrição, valor, data), no formato json
```json
{
"descricao": "Minha descrição atualizada de receita",
"valor": "1000,00",
"data": "2022-08-02 19:43:10"
}
```visualização de resultado com json
caso SUCESSO
```json
{
"message": "Dados atualizado"
}
```caso não encontre REGISTO
```json
{
"error": "Não há registro para receita de id: 1"
}
```caso ERRO
```json
{
"message": "Erro ao alualizar receita de id: 1"
}
```### Adcionar uma despesas
- ```http://localhost.5000/api/v1/despesas```
metodo POST com campos obrigatorios (descrição, valor, data), no formato json
```json
{
"descricao": "Minha descrição de receita",
"valor": "1000,00",
"data": "2022-08-02 19:43:10"
}
```visualizando resultado em json
caso de SUCESSO
```json
{
"message": "Dados inseridos com sucesso"
}
```caso ERRO
```json
{
"message": "Não é permitido salvar, verifique os dados inseridos e se não são repeditos!"
}
```### Visualizar todas as despesas
- ```http://localhost.5000/api/v1/despesas```
metodo GET, visualização em json
caso tenha REGISTROS
```json
[
{
"id": 1,
"descricao": "Minha descrição de despesa",
"valor": "1000,00",
"data": "2022-08-02 19:43:10"
},
{
"id": 2,
"descricao": "Minha descrição 2 de despesa",
"valor": "1000,00",
"data": "2022-08-02 19:43:10"
}
]
```caso não tenha REGISTOS
```json
{
"message": "Não há registros em receitas"
}
```### Deletar despesa
- ```http://localhost.5000/api/v1/despesas/1```
metodo DELETE, visualização em json
caso SUCESSO
```json
{
"message": "Registro deletado com sucesso para o id: 1"
}
```caso ERRO
```json
{
"message": "Registro não existe para este id: 1"
}
```### Visualizar uma despesa
- ```http://localhost.5000/api/v1/despesas/1```
metodo GET, visualização em json
```json
{
"id": 1,
"descricao": "Minha descrição de despesa",
"valor": "1000,00",
"data": "2022-08-02 19:43:10"
}
```### Atualizar uma despesa
- ```http://localhost.5000/api/v1/despesas/1```
metodo PUT com campos obrigatorios (descrição, valor, data), no formato json
```json
{
"descricao": "Minha descrição atualizada de despesa",
"valor": "1000,00",
"data": "2022-08-02 19:43:10"
}
```visualização de resulta com json
caso SUCESSO
```json
{
"message": "Dados atualizado"
}
```caso não encontre REGISTO
```json
{
"message": "Não há registro para despesa de id: 1"
}
```caso ERRO
```json
{
"message": "Erro ao alualizar despesa de id: 1"
}
```