Skip to content

vanessacreis/Bookstore-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📚 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


📖 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.

Linkedin Badge

About

API Rest com as informações do estoque de uma livraria.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published