Desafio-Back-end-03-dindin-dbeifood
Bem-vindo(a) à documentação da nossa API de gestão financeira Din-Din API. Com esta API, você poderá gerenciar com muito mais conforto a sua vida financeira.
A nossa API foi desenvolvida para simplificar o controle financeiro das pessoas. Com ela, você poderá acompanhar saldos, gerar relatórios de transferências e consultar extratos entre outras funcionalidades.
Nossa documentação é abrangente e oferece todas as informações necessárias para você começar a utilizar a API. Ela inclui detalhes sobre os endpoints disponíveis, os parâmetros de entrada e saída, exemplos de código, autenticação e segurança, entre outros.
A documentação também apresenta as melhores práticas para utilização da API e dicas para otimizar o desempenho e a segurança da integração utilizando o padrão REST.
Caso precise de ajuda, nossa equipe de suporte técnico está pronta para ajudá-lo(a) a implementar a API da melhor forma possível.
Estamos animados em tê-lo(a) como nosso(a) cliente e esperamos que a nossa API de gestão financeira seja uma ferramenta valiosa para sua empresa. Obrigado por escolher a nossa plataforma e aproveite ao máximo nossa documentação!
Atenciosamente, Equipe de desenvolvimento da Din-Din API.
- Clone este repositório:
git clone [email protected]:rdvid/desafio-backend-03-dindin-dbeifood.git
- Navegue até a pasta do seu repositório local:
cd desafio-backend-03-dindin-dbeifood
- Instale as dependencias necessárias:
npm install
- Inicialize o projeto no terminal:
npm run dev
Uma vez rodando, a nossa API pode ser acessada através de requisições HTTP por um cliente local.
Endpoins disponíveis até o momento:
POST /login
: Essa rota é uma tela de login, ela demanda um objeto no corpo da requisição, contendo "email" e "senha" (Atenção com a estrutura do objeto, é fundamental que a requisição respeite as nomenclaturas). Esta rota retorna o usuário cadastrado e um Token JWT que pode e deve ser usado para acessar demais rotas referentes as credenciais informadas.
// POST /login
{
"email": "[email protected]",
"senha": "123456"
}
// HTTP Status 200
{
"usuario": {
"id": 1,
"nome": "José",
"email": "[email protected]"
},
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MiwiaWF0IjoxNjIzMjQ5NjIxLCJleHAiOjE2MjMyNzg0MjF9.KLR9t7m_JQJfpuRv9_8H2-XJ92TSjKhGPxJXVfX6wBI"
}
POST /usuario
: Esta rota é uma tela de cadastramento, com ela novos usuários podem se registrar e assim fazer uso da aplicação. Ela recebe um Objeto JSON no corpo da requisição com os campos/propriedades: "nome", "email" e "senha". (não se preocupe, a senha é armazenada de forma segura no banco de dados através de criptografia aplicada):
// POST /usuario
{
"nome": "José",
"email": "[email protected]",
"senha": "123456"
}
// HTTP Status 200 / 201 / 204
{
"id": 1,
"nome": "José",
"email": "[email protected]"
}
PUT /usuario
: Essa rota serve para editar as informações de um usuário já existente dentro da plataforma. "nome", "email" e "senha" novos são necessários nessa operação.
// PUT /usuario
{
"nome": "José de Abreu",
"email": "[email protected]",
"senha": "j4321"
}
// HTTP Status 200 / 201 / 204
// Sem conteúdo no corpo (body) da resposta
GET /categoria
: Essa rota serve para listar todas as categorias de transações registradas até o momento.
// GET /categoria
// Não é necessário enviar nenhum dado para essa operação.
// HTTP Status 200 / 201 / 204
[
{
id: 1,
descricao: "Roupas",
},
{
id: 2,
descricao: "Mercado",
},
];
// HTTP Status 200 / 201 / 204
[];
GET /transacao/
: Essa rota lista todas as transações da conta conectada.
// GET /transacao
// Não é necessário enviar nenhum dado para essa operação.
// HTTP Status 200 / 201 / 204
[
{
id: 1,
tipo: "saida",
descricao: "Sapato amarelo",
valor: 15800,
data: "2022-03-23T15:35:00.000Z",
usuario_id: 5,
categoria_id: 4,
categoria_nome: "Roupas",
},
{
id: 3,
tipo: "entrada",
descricao: "Salário",
valor: 300000,
data: "2022-03-24T15:30:00.000Z",
usuario_id: 5,
categoria_id: 6,
categoria_nome: "Salários",
},
];
// HTTP Status 200 / 201 / 204
[];
GET /transacao/:id
: Ao especificar o numero de alguma transação na url, é retornado o detalhamento dessa transação.
// GET /transacao/2
// Sem conteúdo no corpo (body) da requisição
// HTTP Status 200 / 201 / 204
{
"id": 3,
"tipo": "entrada",
"descricao": "Salário",
"valor": 300000,
"data": "2022-03-24T15:30:00.000Z",
"usuario_id": 5,
"categoria_id": 6,
"categoria_nome": "Salários",
}
POST /transacao
: Essa rota serve para registrar uma transação. Para que isso aconteça é necessário que, no corpo da requisição, seja adicionado um objeto JSON contendo "tipo", "descricao", "valor", "data", "id da categoria da transacao" (Atente-se a forma como as propriedades do JSON são escritas, é necessário respeitar a verbosidade).
// POST /transacao
{
"tipo": "entrada",
"descricao": "Salário",
"valor": 300000,
"data": "2022-03-24T15:30:00.000Z",
"categoria_id": 6
}
// HTTP Status 200 / 201 / 204
{
"id": 3,
"tipo": "entrada",
"descricao": "Salário",
"valor": 300000,
"data": "2022-03-24T15:30:00.000Z",
"usuario_id": 5,
"categoria_id": 6,
"categoria_nome": "Salários",
}
PUT /transacao/:id
: Ao utilizar o metodo PUT em uma transação especificada através de um ID, é possível alterar algumas informações como: "descricao", "valor", "data", "categoria_id" e "tipo", passados através de um objeto JSON informado no corpo da requisição.
// PUT /transacao/2
{
"descricao": "Sapato amarelo",
"valor": 15800,
"data": "2022-03-23 12:35:00",
"categoria_id": 4,
"tipo": "saida"
}
// HTTP Status 200 / 201 / 204
// Sem conteúdo no corpo (body) da resposta
DELETE /transacao/:id
: Essa rota deleta uma transação especifica.
// DELETE /transacao/2
//
// HTTP Status 200 / 201 / 204
// Sem conteúdo no retorno
GET /transacao/extrato
: Ao utilizar a rota de extrato, é retornado um objeto JSOn que informa a totalidade somada dos valores que sairam e que entraram na conta até o momento atual:
// DELETE /transacao/extrato
// Sem conteúdo no corpo (body) da requisição
// HTTP Status 200 / 201 / 204
{
"entrada": 300000,
"saida": 15800
}
para utilizar a API, utilize um serviço para requisições HTTP como Axios ou HTTPModule em Angular ou uma aplicação para requisições como Postman, Insomnia or cURL.
Diego Oliveira |
Rafael David |
---|
If you have any questions or suggestions about this project, feel free to contact me through my GitHub profile: @rdvid.