https://github.com/t0malexander/nestjs-alura
API RESTful com operações básicas CRUD usando Nest.js, Typescript, SOLID e Design Patterns
https://github.com/t0malexander/nestjs-alura
api-restful crud design-patterns nestjs solid typescript
Last synced: 2 months ago
JSON representation
API RESTful com operações básicas CRUD usando Nest.js, Typescript, SOLID e Design Patterns
- Host: GitHub
- URL: https://github.com/t0malexander/nestjs-alura
- Owner: T0mAlexander
- Created: 2023-05-20T04:03:57.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-05-20T20:24:59.000Z (about 2 years ago)
- Last Synced: 2025-02-15T06:16:58.749Z (4 months ago)
- Topics: api-restful, crud, design-patterns, nestjs, solid, typescript
- Language: TypeScript
- Homepage:
- Size: 88.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# CRUD Básico com Nest.js
## Descrição
>
> Este mini repositório foi publicado com propósitos para fundamentação e concepção de novas API RESTful tendo como ferramenta principal o popular framework Nest.js## Padrões de projeto
- **DTO (Data Transfer Object):** é um padrão de projeto para simplificar a transmissão de dados entre diferentes partes de um sistema único fazendo o papel de empacotamento dos dados necessários para envio ou recebimento e fazendo com que isso evite exposição pública das lógicas sistêmicas
- **Controller:** é um controlador que define e recebe requisições HTTP. Ele atua como um intermediário que popularmente no mundo de software, são chamados de **middlewares** e possibilita aplicação de lógicas e especificidades extras para tratativa antes que os métodos HTTP sejam acionados
- **Module:** é um agrupador de componentes de um sistema assim como o controlador/middleware. Define as dependências essenciais para funcionamento dos componentes e também as configurações das mesmas.
- **Service:** é outro agrupador porém das lógicas sistêmicas. Encapsula funcionalidades específicas e é usado pelos controladores para performar operações mais complexas. São injetados nos controladores ou em outro serviço através de um decorador Typescript batizado de `@Injectable` fornecido pelo próprio Nest.js
- **Design Patterns:** padrão de projeto que provê abordagens, organização e estruturação pré-definida para soluções de problemas recorrentes durante desenvolvimento de softwares
- **SOLID:** príncipios de design de software para modularização, extensão e manutenibilidade de código. Frequentemente aliado ao Design Patterns para organização, componentização e testabilidade de código.
## Instalação e uso
1. Clone o repositório
```bash
git clone https://github.com/T0mAlexander/NestJS-Alura
```2. Acesse o repositório
```bash
cd NestJS-Alura
```3. Instale as dependências
```bash
npm install
```4. Inicie o servidor
```bash
npm run nest:start
```> - Nota: o servidor será instanciado na porta **3333**
## Rotas e usos
> - Envios de dados para testagem da API devem ser feitos no formato **JSON**
- `GET /users`: retorna a lista de usuários cadastrados retornando apenas o identificador único (**id**) e nome
- `POST /users` registra um novo usuário na base de dados
Estrutura do envio de dados```javascript
{
"name": "string",
"email": "string",
"password": "string" // obrigatório, mínimo 6 dígitos
}
```
- `PUT /users/:id`: edita e sobrescreve dados de um usuário já existente na base de dados
- Requisitos: ID de um usuário existente na base de dados. Este ID irá substituir o `:id`
Estrutura do envio de dados```javascript
{
"name": "string", // opcional
"email": "string", // opcional
"password": "string" // opcional
}
```
- `DELETE /users/:id`: exclui um usuário e seus respectivos dados
- Requisitos: ID de um usuário existente na base de dados
## Termos de uso
Este projeto é de livre uso para outros sem nenhuma restrição para cópias ou forks 👍🏻
### Autor: Tom Alexander