{"id":20956940,"url":"https://github.com/maiarasanto/apistackx","last_synced_at":"2026-04-28T16:01:42.232Z","repository":{"id":263300258,"uuid":"889942350","full_name":"MaiaraSanto/ApiStackX","owner":"MaiaraSanto","description":"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. ","archived":false,"fork":false,"pushed_at":"2024-11-17T17:37:58.000Z","size":20,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-19T23:44:16.860Z","etag":null,"topics":["api","crud","delete","express","get","javascript","nodejs","npm","post","put","requisition"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MaiaraSanto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-17T16:23:49.000Z","updated_at":"2024-11-18T01:07:48.000Z","dependencies_parsed_at":"2024-11-17T17:45:25.606Z","dependency_job_id":"ed85d513-7472-447a-af53-9296302c799d","html_url":"https://github.com/MaiaraSanto/ApiStackX","commit_stats":null,"previous_names":["maiarasanto/api---stackx"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaiaraSanto%2FApiStackX","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaiaraSanto%2FApiStackX/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaiaraSanto%2FApiStackX/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaiaraSanto%2FApiStackX/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MaiaraSanto","download_url":"https://codeload.github.com/MaiaraSanto/ApiStackX/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243352033,"owners_count":20276916,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","crud","delete","express","get","javascript","nodejs","npm","post","put","requisition"],"created_at":"2024-11-19T01:28:42.276Z","updated_at":"2026-04-28T16:01:42.131Z","avatar_url":"https://github.com/MaiaraSanto.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Api-StackX\nEste 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.\n\nEstrutura do Projeto\nAbaixo está a estrutura de diretórios e arquivos do projeto, com uma breve descrição de cada componente:\n\nmeu_projeto_api/\n\n├── src/\n\n│   ├── server.js  `` Arquivo principal para configuração e inicialização do servidor``\n\n│   ├── routes/\n\n\n│   │   └── entidadeRoutes.js  ``Define as rotas da API para a entidade``\n\n│   ├── controllers/\n\n│   │   └── entidadeController.js ``Contém a lógica das operações CRUD``\n\n│   ├── data/\n\n│   │   └── entidade.json ``Armazena os dados da entidade para persistência``\n\n│   └── middlewares/\n\n│       └── validateMiddleware.js ``Middleware para validação dos dados das requisições``\n\n├── README.md  ``Documentação detalhada do projeto``\n\n└── package.json  ``Define as dependências e scripts do projeto``\n\n# Explicação dos Componentes\n- src/: Pasta que contém todo o código principal da aplicação.\n  \n- server.js: Configura e inicializa o servidor Express. É o ponto de entrada da aplicação.\n  \n- routes/: Pasta que armazena os arquivos de rotas.\n  \n- entidadeRoutes.js: Define as rotas para a entidade, associando cada rota a um controlador específico.\n\n- controllers/: Pasta que contém a lógica de negócio da aplicação.\n\n- entidadeController.js: Define as funções responsáveis por cada operação CRUD da entidade (obter todos os itens, criar, atualizar e deletar).\n\n- data/: Pasta destinada ao armazenamento de dados.\n\n- entidade.json: Arquivo JSON onde os dados da entidade são persistidos.\n\n- middlewares/: Pasta para middlewares personalizados.\n\n- 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.\n\n# Pré-requisitos\nAntes de iniciar o projeto, certifique-se de que você possui as seguintes ferramentas instaladas:\n\n- Node.js - Ambiente de execução JavaScript\n- NPM - Gerenciador de pacotes para Node.js\n= Instalação\n- Siga os passos abaixo para configurar o projeto em sua máquina local:\n- git clone https://github.com/seu-usuario/meu_projeto_api.git\n\n  ````\n  cd meu_projeto_api\n  \n   npm install\n\n# Scripts\nO arquivo package.json contém scripts que facilitam a execução do projeto. Os principais scripts são:\n\n`` npm start`` Inicia o servidor em modo de produção, executando node src/server.js.\n\n`` npm run dev`` Inicia o servidor em modo de desenvolvimento com nodemon, que reinicia automaticamente o servidor ao detectar mudanças nos arquivos.\n\n Para rodar o projeto em modo de desenvolvimento, use o comando:\n  ``npm run dev``\n\n # Uso da API\n Abaixo estão as rotas disponíveis nesta API. Todas as requisições devem ser feitas para o endpoint base /api/entidade.\n## Endpoints\n1. GET /api/entidade: Retorna uma lista de todos os itens.\n\n````\n[\n  {\n    \"id\": \"1\",\n    \"title\": \"Item 1\",\n    \"description\": \"Descrição do item 1\",\n    \"quantity\": 10\n  },\n  ...\n]\n\n````\n\n## POST /api/entidade: Cria um novo item na lista.\n- Requisição:\n````\n{\n  \"title\": \"Novo Item\",\n  \"description\": \"Descrição do novo item\",\n  \"quantity\": 5\n}\n````\n- Resposta\n````\n{\n  \"id\": \"2\",\n  \"title\": \"Novo Item\",\n  \"description\": \"Descrição do novo item\",\n  \"quantity\": 5\n}\n````\n## PUT /api/entidade/\n2. Atualiza um item existente pelo seu ID.\n\n- Requisição:\n\n````\n{\n  \"title\": \"Item Atualizado\",\n  \"description\": \"Descrição atualizada\",\n  \"quantity\": 7\n}\n````\n- Resposta\n````\n{\n  \"id\": \"2\",\n  \"title\": \"Item Atualizado\",\n  \"description\": \"Descrição atualizada\",\n  \"quantity\": 7\n}\n````\n## DELETE /api/entidade/\n3. Remove um item da lista pelo seu ID.\n- Resposta: Status 204 - Sem conteúdo.\n\n## Exemplos de Requisições\nAqui estão alguns exemplos de como usar o Postman ou outra ferramenta para fazer requisições aos endpoints:\n\n- Criar um novo item\n- Método: POST\n- URL: ``http://localhost:3000/api/entidade``\n- Corpo da Requisição:\n ````\n{\n  \"title\": \"Novo Item\",\n  \"description\": \"Exemplo de descrição\",\n  \"quantity\": 5\n}\n````\n## Atualizar um item\n- Método: PUT\n- URL: ``http://localhost:3000/api/entidade/1``\n- Corpo da Requisição\n ````\n{\n  \"title\": \"Item Atualizado\",\n  \"description\": \"Nova descrição\",\n  \"quantity\": 10\n}\n````\n## Deletar um item\n- Método: DELETE\n- URL: ``http://localhost:3000/api/entidade/1``\n\n ## Validação de Dados\nO 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:\n\n- title: String (obrigatório)\n- description: String (obrigatório)\n- quantity: Número inteiro (obrigatório)\nCaso os dados enviados não estejam de acordo com o esquema, a API retorna uma resposta de erro 400 com uma mensagem detalhada.\n\n## Exemplos de Erros\nAbaixo estão alguns erros comuns e suas respectivas respostas:\n\n1. Erro 400 - Requisição inválida\n- Exemplo: Enviar um campo quantity como texto ao invés de número.\n- Resposta:\n````\n{\n  \"message\": \"\\\"quantity\\\" must be a number\"\n}\n````\n\n2. Erro 404 - Item não encontrado\n\n- Exemplo: Tentar atualizar ou deletar um item com ID que não existe.\n- Resposta:\n ````\n{\n  \"message\": \"\\\"quantity\\\" must be a number\"\n}\n````\n\n## Dependências\n- Express: Framework para construção de servidores web.\n- Nodemon: Ferramenta de desenvolvimento que reinicia automaticamente o servidor ao detectar mudanças nos arquivos.\n- Joi: Biblioteca de validação de dados.\n\n## Licença\n- Este projeto está sob a licença ISC. Consulte o arquivo LICENSE para mais informações.\n  \n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaiarasanto%2Fapistackx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaiarasanto%2Fapistackx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaiarasanto%2Fapistackx/lists"}