Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/luc-ribeiro/transactions-api-node
Projeto com o objetivo de criar uma API REST de transações, utilizando tecnologias como Fastify, Knex.js e Vitest.
https://github.com/luc-ribeiro/transactions-api-node
fastify knexjs nodejs sqlite3 typescript vitest zod
Last synced: about 1 month ago
JSON representation
Projeto com o objetivo de criar uma API REST de transações, utilizando tecnologias como Fastify, Knex.js e Vitest.
- Host: GitHub
- URL: https://github.com/luc-ribeiro/transactions-api-node
- Owner: luc-ribeiro
- Created: 2024-05-01T15:30:46.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-05-01T15:31:42.000Z (8 months ago)
- Last Synced: 2024-05-02T10:35:46.901Z (8 months ago)
- Topics: fastify, knexjs, nodejs, sqlite3, typescript, vitest, zod
- Language: TypeScript
- Homepage:
- Size: 79.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README-PTBR.md
Awesome Lists containing this project
README
Transactions REST API Node.js
## 💻 Projeto
Este projeto foi criado durante o curso de Node.js da Rocketseat.O projeto consiste na criação de uma API REST, utilizando tecnologias como Fastify, Knex.js e Vitest.
O objetivo é praticar a criação de APIs com a utilização dessas tecnologias e enfatizar a importância de testes automatizados.## 🚀 Tecnologias
- **Node.js**
- **TypeScript**
- **Fastify**
- **Knex.js**
- **Vitest**
- **Zod**
- **SQLite3**## Endpoints
#### Criando uma nova transação
POST
/transactions
(cria uma nova transação)
##### Corpo
> | name | type | data type | description |
> |-----------|-----------|-------------------------|-----------------------------------------------------------------------|
> | title | required | string | Nome da transação |
> | amount | required | int | Valor da transação |
> | type | required | string | Tipo da transação ("credit" ou "debit") |##### Respostas
> | http code | content-type | response |
> |---------------|-----------------------------------|---------------------------------------------------------------------|
> | `201` | `text/plain;charset=UTF-8` | `Transaction created successfully` |
> | `400` | `application/json` | `{"code":"400","message":"Bad Request"}` |
> | `405` | `text/html;charset=utf-8` | None |##### Exemplo cURL
> ```javascript
> curl -X POST -H "Content-Type: application/json" --data @post.json http://localhost:3333/transactions
> ```### Para os endpoints abaixo, é necessário gerar uma nova transação, para que seja criado um cookie de autenticação e armazenado no dispositivo.
#### Listando transações
GET
/transactions
(retorna todas as transações)
##### Parâmetros
Nenhum.
##### Respostas
> | http code | content-type | response |
> |---------------|-----------------------------------|---------------------------------------------------------------------|
> | `200` | `application/json` | JSON contendo todas as transações |##### Exemplo cURL
> ```javascript
> curl -X GET -H "Content-Type: application/json" http://localhost:3333/transactions
> ```#### Exibindo uma transação
GET
/transactions/{id}
(exibe uma transação)
##### Parâmetros
> | name | type | data type | description |
> |-----------|-----------|-------------------------|-----------------------------------------------------------------------|
> | id | required | int | Identificador único da transação |##### Respostas
> | http code | content-type | response |
> |---------------|-----------------------------------|---------------------------------------------------------------------|
> | `200` | `application/json` | JSON contendo a transação do ID específico |##### Exemplo cURL
> ```javascript
> curl -X GET -H "Content-Type: application/json" http://localhost:3333/transactions/id
> ```#### Exibindo o montante das transações (saldo)
GET
/transactions/summary
(exibe um resumo com o montante das transações)
##### Parâmetros
Nenhum.
##### Respostas
> | http code | content-type | response |
> |---------------|-----------------------------------|---------------------------------------------------------------------|
> | `200` | `application/json` | JSON contendo um objeto com o montante das transações |##### Exemplo cURL
> ```javascript
> curl -X GET -H "Content-Type: application/json" http://localhost:3333/transactions/summary
> ```
## :page_facing_up: Como utilizar
- Faça um clone deste repositório:
```sh
$ git clone https://github.com/luc-ribeiro/rest-api-node.git
```- Instale as dependências:
```sh
# com npm
$ npm install# com yarn
$ yarn install
```- Crie um arquivo ```.env``` seguindo a estrutura do ```.env.example```
- Rode as migrations:
```sh
# com npm
$ npm run knex migrate:latest# com yarn
$ yarn knex migrate:latest
```- Execute o comando:
```sh
# com npm
$ npm run dev# com yarn
$ yarn dev
```- O projeto rodará em `localhost:3333`