Skip to content

O PetShop-API é uma aplicação RESTful em Node.js e TypeScript que gerencia usuários e seus pets, com operações completas de CRUD e integração com banco de dados PostgreSQL seguindo o padrão MVC.

Notifications You must be signed in to change notification settings

arthursteinerr/PetShop-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Trabalho Dev API - Users & Pets

Logo do Projeto

Descrição do Projeto

Esta aplicação segue o padrão MVC (Model-View-Controller), garantindo uma arquitetura organizada, modular e escalável.

O projeto oferece uma API REST completa para gerenciar usuários e seus pets, com CRUD total, validação de dados e controle de regras de negócio, conectada a PostgreSQL via Knex.

O foco principal é praticar o desenvolvimento de APIs com boas práticas, incluindo:

  • Estruturação de projetos em TypeScript.
  • Boas práticas em APIs RESTful.
  • Persistência de dados em banco de dados relacional (PostgreSQL ou MySQL).
  • Validação de dados, tratamento de erros e restrições de negócio.
  • Separação clara de responsabilidades (Data, Business, Controller, Routes, Types).

Tecnologias Utilizadas

  • Node.js: Ambiente de execução JavaScript no servidor.
  • TypeScript: Tipagem estática para maior segurança.
  • Express: Framework para criação de servidores e APIs.
  • Knex.js: Query builder SQL para Node.js.
  • PostgreSQL: Banco de dados relacional.
  • Git/GitHub: Controle de versão e colaboração.
  • Dotenv: Gerenciamento de variáveis de ambiente.

Estrutura do Projeto

trabalho-dev-api/
│
├─ src/
│ ├─ business/
│ │ ├─ userBusiness.ts     # Lógica de negócio de usuários
│ │ └─ petBusiness.ts      # Lógica de negócio de pets
│ │
│ ├─ controller/
│ │ ├─ userController.ts   # Controladores de usuários
│ │ └─ petController.ts    # Controladores de pets
│ │
│ ├─ data/
│ │ ├─ userData.ts         # Acesso e manipulação de dados de usuários
│ │ └─ petData.ts          # Acesso e manipulação de dados de pets
│ │
│ ├─ routes/
│ │ ├─ userRoutes.ts       # Rotas de usuários
│ │ └─ petRoutes.ts        # Rotas de pets
│ │
│ ├─ types/
│ │ ├─ User.ts             # Tipos/interfaces de usuários
│ │ └─ Pet.ts              # Tipos/interfaces de pets
│ │
│ ├─ dbConnection.ts       # Configuração e conexão com o banco
│ ├─ app.ts                # Configuração do Express, middlewares e rotas
│ └─ server.ts             # Inicialização do servidor
│
├─ .env                    # Variáveis de ambiente (não versionar)
├─ package.json            # Dependências e scripts do Node
├─ tsconfig.json           # Configurações do TypeScript
└─ README.md               # Documentação do projeto

Funcionalidades

Usuários (Users)

  • GET /users → Lista todos os usuários.
  • GET /users/:id → Busca usuário por ID. Retorna 404 se não existir.
  • POST /users → Cria um usuário. Campos obrigatórios: name e email. Valida duplicidade de email (409 se já existir). Retorna 201 com o usuário criado.
  • PUT /users/:id → Atualiza completamente um usuário existente. Valida ID e duplicidade de email. Retorna 200 com o usuário atualizado.
  • DELETE /users/:id → Remove usuário apenas se não houver pets vinculados. Caso exista algum pet, retorna 409. Retorna 204 sem conteúdo.

Pets

  • GET /pets → Lista todos os pets.
  • GET /pets/:id → Busca pet por ID. Retorna 404 se não existir.
  • POST /pets → Cria um pet. Campos obrigatórios: name e user_id. Valida se user_id existe em usuários. Retorna 201 com o pet criado.
  • PUT /pets/:id → Atualiza completamente um pet existente. Valida ID e user_id existente. Retorna 200 com o pet atualizado.
  • DELETE /pets/:id → Remove pet. Retorna 404 se não existir. Retorna 204 sem conteúdo.

Validações Comuns

  • id e user_id devem ser números inteiros → 400 se inválidos.
  • name obrigatório (string não vazia) → 400 se inválido.
  • email obrigatório, válido e único → 400 ou 409 se inválido/duplicado.
  • user_id deve existir para criar ou atualizar pets → 400 se inválido.

Documentação da API

Para acessar a documentação completa da API, incluindo detalhes sobre todos os endpoints disponíveis e exemplos de uso, acesse o link abaixo:

Link do Postman


Testando a API

Você pode usar ferramentas como Postman, Thunder Client ou qualquer cliente HTTP para testar os endpoints da API.

1. Criar um usuário

Exemplo de requisição para criar um usuário na API:

POST /users
Content-Type: application/json

{
  "name": "Arthur Steiner",
  "email": "arthur@teste.com"
}

2. Criar um pet

Exemplo de requisição para criar um pet associado a um usuário:

POST /pets
Content-Type: application/json

{
  "name": "Rex",
  "user_id": 1
}

3. Listar todos os usuários

Exemplo de requisição para listar todos os usuários cadastrados:

GET /users

4. Listar todos os pets

Exemplo de requisição para listar todos os pets cadastrados:

GET /pets

Autor e Créditos

Arthur Steiner Estudante de Análise e Desenvolvimento de Sistemas - FAMINAS (Muriaé) GitHub: @arthursteinerr


Esta API foi desenvolvida como Trabalho Acadêmico para a disciplina Desenvolvimento de APIs da FAMINAS, consolidando aprendizado em Node.js, TypeScript, Express, PostgreSQL e arquitetura MVC.

About

O PetShop-API é uma aplicação RESTful em Node.js e TypeScript que gerencia usuários e seus pets, com operações completas de CRUD e integração com banco de dados PostgreSQL seguindo o padrão MVC.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published