Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/elis-vasconcelos/backend-rest-api-crud
REST API with a CRUD to control a table of users. It uses Express, ORM Prisma, SQLite and Tyscript.
https://github.com/elis-vasconcelos/backend-rest-api-crud
backend crud expressjs prisma-orm rest-api
Last synced: about 1 month ago
JSON representation
REST API with a CRUD to control a table of users. It uses Express, ORM Prisma, SQLite and Tyscript.
- Host: GitHub
- URL: https://github.com/elis-vasconcelos/backend-rest-api-crud
- Owner: Elis-Vasconcelos
- Created: 2024-12-04T23:07:05.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2024-12-05T09:45:15.000Z (about 2 months ago)
- Last Synced: 2024-12-05T10:30:33.886Z (about 2 months ago)
- Topics: backend, crud, expressjs, prisma-orm, rest-api
- Language: TypeScript
- Homepage:
- Size: 43.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# API REST para Controle de Usuários
## Descrição
Este projeto consiste em uma API REST desenvolvida com **Typescript**, **ExpressJS** e **PrismaORM**, utilizando um banco de dados relacional (**SQLite**) para gerenciar uma tabela de usuários. A API implementa as operações CRUD e inclui rotas para criação, leitura, atualização e exclusão de usuários. Também oferece recursos adicionais para busca de usuários por diferentes critérios.
## Funcionalidades Implementadas
### Requisitos Obrigatórios
- **Rota para criar usuário:**
- Cria um novo usuário, garantindo que o **email** seja único.
- **Rota para retornar usuário por ID:**
- Busca um usuário específico pelo ID.- **Rota para retornar usuário por email:**
- Busca um usuário específico pelo email.- **Rota para retornar usuários por nome:**
- Busca um ou mais usuários com base no nome.- **Rota para deletar usuário por ID:**
- Remove um usuário do banco de dados pelo ID.- **Rota para atualizar usuário por ID:**
- Atualiza as informações de um usuário pelo ID, garantindo que o **email** seja único.### Campos Obrigatórios para Usuários
A tabela de usuários inclui os seguintes campos:
- **Id:** Identificador único.
- **Nome:** Nome do usuário.
- **Email:** Email único.
- **Senha:** Senha do usuário.
- **Idade:** Idade do usuário.
- **Estado:** Estado onde o usuário reside.
- **Cidade:** Cidade onde o usuário reside.### Requisitos Opcionais
- **Docker:** A API pode ser configurada e executada localmente usando Docker.
- **Mensagens de erro personalizadas:**
- Usuário não encontrado (em todas as rotas por ID e Email).
- Email já existente (na criação e atualização de usuários).
- **Autenticação JWT:**
- Rota de login e logout com geração de token JWT.
- Validação de token para proteger as outras rotas.## Tecnologias Utilizadas
- **Node.js**: Ambiente de execução.
- **ExpressJS**: Framework para desenvolvimento de APIs.
- **PrismaORM**: Gerenciador de banco de dados.
- **SQLite**: Banco de dados relacional.
- **Typescript**: Linguagem para maior segurança e tipagem estática.
- **Docker** (opcional): Para containerização da aplicação.## Rotas Disponíveis
- **POST /usuarios** - Criar um novo usuário
- **GET /usuarios/:id** - Buscar usuário por ID
- **GET /usuarios/email/:email** - Buscar usuário por email
- **GET /usuarios/nome/:nome** - Buscar usuário(s) por nome
- **DELETE /usuarios/:id** - Deletar usuário por ID
- **PUT /usuarios/:id** - Atualizar usuário por ID
- **POST /login** - Login e geração do token JWT
- **POST /logout** - Logout e invalidação do token JWT### Exemplo de requisição
```bash
POST /usuarios
Content-Type: application/json{
"nome": "João Silva",
"email": "[email protected]",
"senha": "senha123",
"idade": 30,
"estado": "SP",
"cidade": "São Paulo"
}
```
### Resposta Esperada
```bash
{
"id": 1,
"nome": "João Silva",
"email": "[email protected]",
"idade": 30,
"estado": "SP",
"cidade": "São Paulo"
}
```