📚
Bookstore API
Projeto de encerramento do módulo 4 da Resilia Educação. O objetivo é desenvolver uma API Rest com as informações do estoque de uma livraria.
Deploy disponível no Heroku, você pode acessá-lo aqui.
📘
Pré-requisitos
- Node.Js - v. 16.13.2
- NPM - v. 8.1.2
- Express - v. 4.17.3
- SQLite - v. 5.0.0
- Nodemon - v. 2.0.15
- Supertest - v. 6.2.2
📖
Iniciando da aplicação
Rode os comandos a seguir no terminal ou PoweShell.
- Clone o repositório:
git clone https://github.com/vanessacreis/Bookstore-API.git
- Acesse a pasta:
cd BookstoreAPI
- Instale os pacotes necessários:
npm install
- Popule o banco de dados:
npm run populate
- Inicie o servidor:
npm run start
Ao iniciar o projeto, o servidor será aberto em http://localhost:3000/, sendo 3000 a porta padrão. Caso necessário, a porta poderá ser alterada no arquivo server.js
📗
Rotas HTTP
GET /books
Lista todos os livros da base de dados. Exemplo da resposta esperada:
{
"books": [
{
"ID_Books": 1,
"Name": "O Sol é Para Todos",
"Writer": "Harper Lee",
"Publisher": "José Olympio",
"Genre": "Ficção Histórica",
"Language": "Português",
"Pages": "350",
"Year": "2015",
"Price": "59.9"
},
{
"ID_Books": 2,
"Name": "A Menina que Roubava Livros",
"Writer": "Markus Zusak",
"Publisher": "Intrínseca",
"Genre": "Ficção História",
"Language": "Português",
"Pages": "480",
"Year": "2011",
"Price": "49.99"
},
],
"count": 2,
"error": false
}
GET /books/book/{id}
Retorna livro de acordo com o id. Campo {id} deverá ser substituído pelo id do livro escolhido. Exemplo da resposta esperada:
{
"book": [
{
"ID_Books": 10,
"Name": "Joyland",
"Writer": "Stephen King",
"Publisher": "Suma",
"Genre": "Suspense",
"Language": "Portugues",
"Pages": "240",
"Year": "2015",
"Price": "25.99"
}
],
"error": false
}
GET /books/price/{id}
Retorna preço do livro de acordo com o id. Campo {id} deverá ser substituído pelo id do livro escolhido. Exemplo da resposta esperada:
{
"info": [
{
"Name": "Capitães da Areia",
"Writer": "Jorge Amado",
"Price": "40.84"
}
],
"error": false
}
GET /books/writer/{Nome+Sobrenome}
Retorna todos os livros do autor escolhido. O nome e sobrenome do autor deverá ser inserido na url com um + ao invés do espaço. Exemplo da resposta esperada:
{
"books": [
{
"ID_Books": 3,
"Name": "Sob a Redoma",
"Writer": "Stephen King",
"Publisher": "Suma",
"Genre": "Suspense",
"Language": "Português",
"Pages": "960",
"Year": "2012",
"Price": "64.9"
},
{
"ID_Books": 10,
"Name": "Joyland",
"Writer": "Stephen King",
"Publisher": "Suma",
"Genre": "Suspense",
"Language": "Portugues",
"Pages": "240",
"Year": "2015",
"Price": "25.99"
}
],
"count": 2,
"error": false
}
POST /books
Insere um novo livro na base de dados. Campos name, writer, publisher e year são obrigatórios e não podem ser enviados vazios. Modelo do schema a ser utilizado no body.
{
"name": "Claros Sinais de Loucura",
"writer": "Karen Harrington",
"publisher": "Intrínseca",
"genre": "Ficção Jovem Adulto",
"language": "Português",
"pages": "256",
"year": "2014",
"price": "24,90"
}
Exemplo da resposta esperada:
{
"message": "Book Claros Sinais de Loucura was registered successfully",
"error": false
}
PUT /books/book/{id}
Atualiza um livro na base de dados. Campo {id} deverá ser substituído pelo id do livro a ser atualizado. Modelo do schema a ser utilizado no body:
{
"name": "Mar Sem Estrelas",
"writer": "Erin Morgenstern",
"publisher": "Morro Branco",
"genre": "Fantasia",
"language": "Português",
"year": "2021",
"pages": "544",
"price": "60.99"
}
Exemplo da resposta esperada:
{
"message": "Book Mar Sem Estrelas was updated.",
"error": false
}
DELETE /books/book/{id}
Deleta o livro escolhido da base de dados. Exemplo da resposta esperada:
{
"message": "Book id: 8 was deleted.",
"error": false
}
📕
Testes
Este projeto conta com um arquivo de testes para conferir o funcionamento das rotas da API. Para utilizá-lo, é necessário que o banco de dados esteja populado. Os testes podem ser rodados com o comando
npm run test
📔
Desenvolvido por
Vanessa Reis
Estudante de Desenvolvimento Web Full Stack, historiadora e leitora.