Giter Site home page Giter Site logo

api-bookstore's Introduction

📚 API Bookstore 📚

Image

Descrição

  • Projeto de conclusão do módulo 4 da formação em Desenvolvimento Web Full Stack @ Resilia.
  • O projeto consiste na criação de uma API REST para interagir com informações do banco de dados de uma livraria.
  • As condições principais para a entrega do projeto foram:
    • o uso do padrão REST, com os verbos referentes ao protocolo HTTP;
    • o uso do padrão DAO ou de ORM para interagir com o banco de dados - optamos por utilizar o ORM Sequelize e o banco de dados SQLite.;
    • Utilização do padrão MVC.

Modelagem do banco de dados

  • O presente repositório se refere à tabela Book

    Image

Como executar o projeto

  • Você precisa ter instalada em sua máquina a versão 16.14.0 do NodeJS, o VSCode e o Insomnia;

  • Faça clone do seguinte repositório:

    git clone https://github.com/carollyb/api-bookstore.git
  • Abra o projeto no VSCode, abra o terminal e assegure-se que está na pasta api-bookstore. Caso esteja em uma pasta acima, execute o seguinte comando:

    cd api-bookstore
  • Instale as dependências

    npm install
  • Crie um arquivo .env na pasta raiz do projeto, copie o conteúdo de .env.example, e coloque a porta de sua preferência (exceto 3001). Não altere os demais campos!

  • Inicie o projeto

    npm start

Criando uma conexão no Beekeeper

Caso queira observar as alterações no banco de dados, a aplicação open-source Beekeeper é uma opção.

  • Disponível para download em: https://www.beekeeperstudio.io/

Após a instalação:

  • Select a connection type: sqlite
  • database file: Procurar a pasta do projeto e seleciona o arquivo dev.sqlite
  • Nomear e salvar
  • Rodar o servidor com npm run dev e recarregar no Beekeeper: a(s) entidade(s) deve(m) aparecer lá

Estrutura da API: rotas possíveis

POST:

  • /books (Cria um cadastro de um novo livro. Deve passar o objeto no corpo da requisição. O id não é necessário pois é gerado automaticamente através da biblioteca uuid)

GET:

  • /books (Lista todos os títulos cadastrados)
  • /books/:title (Lista títulos que sejam semelhantes ou iguais ao título passado como parâmetro)

PUT:

  • /books/:id (Atualiza todos os atributos de um livro cadastrado. Deve passar o objeto com todos os atributos no corpo da requisição, com exceção do id, que não deve ser alterado manualmente)

PATCH:

  • /books/:id (Atualiza um ou mais atributos de um livro cadastrado, com exceção do id. Deve passar um ou mais atributos no corpo da requisição, e o id como parâmetro)

DELETE:

  • /books/:id (Deleta um livro do banco de dados. Deve passar o id do livro como parâmetro)

Exemplos de endpoints

  • Endpoint da requisição do cadastro de um novo livro:
    {
      "id": "f4d8510a-9e5b-40a4-9e38-8aea2917a2be",
      "title": "sample Book 8",
      "author_id": "54mpl33",
      "language": "Spanish",
      "num_pages": 20,
      "publication_date": "1927-12-12T00:00:00.000Z",
      "publisher": "Penguin Books"
    }
  • Endpoint de tentativa de cadastro de livro com título que já existe:
    {
      "error": "This book already exists on our database"
    }

Deploy

Heroku-API-Bookstore

Testes

  • Foram implantados testes de integração para validar o funcionamento das rotas da API

  • Para rodar os testes automatizados, execute no terminal:

    npm run test

Tecnologias utilizadas

NodeJS Express.js Sequelize JavaScript Insomnia Jest

  • NodeJS

  • Express

  • Sequelize ORM

  • JavaScript

  • Insomnia

  • Beekeeper

  • Bibliotecas:

    • Joi (validação de campos)
    • Jest e Supertest (testes de rotas)
    • uuid (geração de ids automáticos)

api-bookstore's People

Contributors

carollyb avatar

Watchers

 avatar

Forkers

ericrodrigues00

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.