Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/maiarasanto/apistackx
Este projeto é uma API desenvolvida em Node.js e Express com o objetivo de praticar conceitos de persistência de dados, validação e documentação de APIs RESTful.
https://github.com/maiarasanto/apistackx
api crud delete express get javascript nodejs npm post put requisition
Last synced: about 1 month ago
JSON representation
Este projeto é uma API desenvolvida em Node.js e Express com o objetivo de praticar conceitos de persistência de dados, validação e documentação de APIs RESTful.
- Host: GitHub
- URL: https://github.com/maiarasanto/apistackx
- Owner: MaiaraSanto
- Created: 2024-11-17T16:23:49.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2024-11-17T17:37:58.000Z (about 1 month ago)
- Last Synced: 2024-11-17T17:45:17.806Z (about 1 month ago)
- Topics: api, crud, delete, express, get, javascript, nodejs, npm, post, put, requisition
- Language: JavaScript
- Homepage:
- Size: 15.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Api-StackX
Este projeto é uma API desenvolvida em Node.js e Express com o objetivo de praticar conceitos de persistência de dados, validação e documentação de APIs RESTful. O projeto permite operações CRUD (Criar, Ler, Atualizar e Deletar) em uma entidade fictícia, com os dados sendo persistidos em um arquivo JSON. A API utiliza middlewares para validação dos dados, garantindo que as requisições atendam aos requisitos de formato e tipo de dados.Estrutura do Projeto
Abaixo está a estrutura de diretórios e arquivos do projeto, com uma breve descrição de cada componente:meu_projeto_api/
├── src/
│ ├── server.js `` Arquivo principal para configuração e inicialização do servidor``
│ ├── routes/
│ │ └── entidadeRoutes.js ``Define as rotas da API para a entidade``
│ ├── controllers/
│ │ └── entidadeController.js ``Contém a lógica das operações CRUD``
│ ├── data/
│ │ └── entidade.json ``Armazena os dados da entidade para persistência``
│ └── middlewares/
│ └── validateMiddleware.js ``Middleware para validação dos dados das requisições``
├── README.md ``Documentação detalhada do projeto``
└── package.json ``Define as dependências e scripts do projeto``
# Explicação dos Componentes
- src/: Pasta que contém todo o código principal da aplicação.
- server.js: Configura e inicializa o servidor Express. É o ponto de entrada da aplicação.
- routes/: Pasta que armazena os arquivos de rotas.
- entidadeRoutes.js: Define as rotas para a entidade, associando cada rota a um controlador específico.- controllers/: Pasta que contém a lógica de negócio da aplicação.
- entidadeController.js: Define as funções responsáveis por cada operação CRUD da entidade (obter todos os itens, criar, atualizar e deletar).
- data/: Pasta destinada ao armazenamento de dados.
- entidade.json: Arquivo JSON onde os dados da entidade são persistidos.
- middlewares/: Pasta para middlewares personalizados.
- validateMiddleware.js: Middleware responsável por validar o corpo das requisições antes de processá-las, garantindo que os dados enviados estejam no formato correto.
# Pré-requisitos
Antes de iniciar o projeto, certifique-se de que você possui as seguintes ferramentas instaladas:- Node.js - Ambiente de execução JavaScript
- NPM - Gerenciador de pacotes para Node.js
= Instalação
- Siga os passos abaixo para configurar o projeto em sua máquina local:
- git clone https://github.com/seu-usuario/meu_projeto_api.git````
cd meu_projeto_api
npm install# Scripts
O arquivo package.json contém scripts que facilitam a execução do projeto. Os principais scripts são:`` npm start`` Inicia o servidor em modo de produção, executando node src/server.js.
`` npm run dev`` Inicia o servidor em modo de desenvolvimento com nodemon, que reinicia automaticamente o servidor ao detectar mudanças nos arquivos.
Para rodar o projeto em modo de desenvolvimento, use o comando:
``npm run dev``# Uso da API
Abaixo estão as rotas disponíveis nesta API. Todas as requisições devem ser feitas para o endpoint base /api/entidade.
## Endpoints
1. GET /api/entidade: Retorna uma lista de todos os itens.````
[
{
"id": "1",
"title": "Item 1",
"description": "Descrição do item 1",
"quantity": 10
},
...
]````
## POST /api/entidade: Cria um novo item na lista.
- Requisição:
````
{
"title": "Novo Item",
"description": "Descrição do novo item",
"quantity": 5
}
````
- Resposta
````
{
"id": "2",
"title": "Novo Item",
"description": "Descrição do novo item",
"quantity": 5
}
````
## PUT /api/entidade/
2. Atualiza um item existente pelo seu ID.- Requisição:
````
{
"title": "Item Atualizado",
"description": "Descrição atualizada",
"quantity": 7
}
````
- Resposta
````
{
"id": "2",
"title": "Item Atualizado",
"description": "Descrição atualizada",
"quantity": 7
}
````
## DELETE /api/entidade/
3. Remove um item da lista pelo seu ID.
- Resposta: Status 204 - Sem conteúdo.## Exemplos de Requisições
Aqui estão alguns exemplos de como usar o Postman ou outra ferramenta para fazer requisições aos endpoints:- Criar um novo item
- Método: POST
- URL: ``http://localhost:3000/api/entidade``
- Corpo da Requisição:
````
{
"title": "Novo Item",
"description": "Exemplo de descrição",
"quantity": 5
}
````
## Atualizar um item
- Método: PUT
- URL: ``http://localhost:3000/api/entidade/1``
- Corpo da Requisição
````
{
"title": "Item Atualizado",
"description": "Nova descrição",
"quantity": 10
}
````
## Deletar um item
- Método: DELETE
- URL: ``http://localhost:3000/api/entidade/1``## Validação de Dados
O middleware de validação ``validateMiddleware.js`` usa o pacote ``Joi`` para garantir que o corpo das requisições ``POST`` e ``PUT`` siga o formato exigido. O esquema de validação exige os seguintes campos:- title: String (obrigatório)
- description: String (obrigatório)
- quantity: Número inteiro (obrigatório)
Caso os dados enviados não estejam de acordo com o esquema, a API retorna uma resposta de erro 400 com uma mensagem detalhada.## Exemplos de Erros
Abaixo estão alguns erros comuns e suas respectivas respostas:1. Erro 400 - Requisição inválida
- Exemplo: Enviar um campo quantity como texto ao invés de número.
- Resposta:
````
{
"message": "\"quantity\" must be a number"
}
````2. Erro 404 - Item não encontrado
- Exemplo: Tentar atualizar ou deletar um item com ID que não existe.
- Resposta:
````
{
"message": "\"quantity\" must be a number"
}
````## Dependências
- Express: Framework para construção de servidores web.
- Nodemon: Ferramenta de desenvolvimento que reinicia automaticamente o servidor ao detectar mudanças nos arquivos.
- Joi: Biblioteca de validação de dados.## Licença
- Este projeto está sob a licença ISC. Consulte o arquivo LICENSE para mais informações.