/KrustyKrab-api

šŸ—„ [BACK-END] Krusty Krab API - API REST criada usando NodeJS, Express, PostgreSQL e Sequelize

Primary LanguageJavaScript

The Krusty Krab - API com Node.js

Krusty Krab API - Ć© uma API Rest desenvolvida para administrar os dados de um restaurante. Neste projeto utilizamos NodeJs, PostgreSQL, Express e Sequelize. Para a seguranƧao do nosso banco, foram utilizados Bcrypt para proteĆ§Ć£o da senha do usuĆ”rio e sistema de autenticaĆ§Ć£o utilizando a criaĆ§Ć£o de token JWT.

Para visualizar, acesse aqui.

senha para acesso:

login
šŸ“Ø admin@krustyKrab.com
šŸ” 123456

ƍndice


1. Resumo

Um pequeno restaurante de hamburgueres, que estĆ” crescendo, necessita de um sistema para realizar pedidos usando um tablet, e que os enviem Ć  cozinha para que sejam preparados de forma ordenada e eficiente.

A interface front-end da aplicaĆ§Ć£o Burger Queen jĆ” foi criado e pode ser visualizada aqui. Neste projeto criamos o back-end para manejar os dados. O projeto foi desenvolvido atravĆ©s de uma API rest compatĆ­vel com as requisiƧƵes vindas do front.

2. Proposta do projeto

O objetivo de aprendizagem principal Ć© adquirir experiĆŖncia com o Node.js como ferramenta para desenvolvimento de aplicaƧƵes de servidor, junto com uma sĆ©rie de outras ferramentas comumente utilizadas nesse contexto (Express como framework, PostgreSQL como base de dados, containers de docker (Hacker Edition), etc).

Neste projeto foi desenvolvido um servidor web que esta servindo JSON atravĆ©s de uma conexĆ£o HTTP, e implantado em um servidor na nuvem.

* Hacker Edition

Neste projeto tambƩm foram desenvolvidos alguns dos desafios propostos para a Hacker edition. Os desafios concluƭdos foram:

  • Criptografar senha do usuĆ”rio
  • Endpoint de autenticaĆ§Ć£o: POST /auth
  • Middleware de autenticaĆ§Ć£o - criaĆ§Ć£o e verificaĆ§Ć£o do token
  • Criar a documentaĆ§Ć£o da API

* Criptografar senha do usuƔrio

Ɖ uma boa prĆ”tica NƃO armazenar a senha do seu usuĆ”rio no seu banco de dados, pois colocaria a seguranƧa de seu usuĆ”rio em risco. Assim, ao invĆ©s de armazenĆ”-la como um simples string, foi armazenada uma hash criptografada. Para isso, utilizou-se o bcryptjs.

Assim, na autenticaĆ§Ć£o (POST /auth), se a senha do usuĆ”rio estĆ” certa ou nĆ£o, poderĆ” ser feita comparando essa hash.

* Endpoint de autenticaĆ§Ć£o

Um usuĆ”rio jĆ” cadastrado no sistma poderĆ” criar um novo token de acesso ao fazer uma requisiĆ§Ć£o no endpoint /Auth.

* Criar token de autenticaĆ§Ć£o JWT

JWT (JSON Web Token) Ć© um mĆ©todo RCT 7519 padrĆ£o da indĆŗstria para realizar autenticaĆ§Ć£o entre duas partes por meio de um token assinado que autentica uma requisiĆ§Ć£o web. Esse token Ć© um cĆ³digo em Base64 que armazena objetos JSON com os dados que permitem a autenticaĆ§Ć£o da requisiĆ§Ć£o.

Um cliente que enviarĆ” uma requisiĆ§Ć£o HTTP ao endpoint de autenticaĆ§Ć£o de uma API. Nela o cliente envia, no corpo da requisiĆ§Ć£o dados como endereƧo de e-mail e senha. Fonte.

* Criar a documentaĆ§Ć£o da API

Foi utilizado o Swagger para escrever a documentaĆ§Ć£o.

3. Diagrama Entidade Relacionamento

Em engenharia de software, um modelo entidade relacionamento (MER) Ć© um modelo de dados para descrever os dados ou aspectos de informaĆ§Ć£o de um domĆ­nio de negĆ³cio ou seus requisitos de processo, de uma maneira abstrata que em Ćŗltima anĆ”lise se presta a ser implementada em um banco de dados, como um banco de dados relacional. Fonte: WikipĆ©dia.

tabela

4. Endpoints

Conforme foi estabelecido no desenvolvimento do desafio, a API possui os seguintes endpoints:

4.1.1 /users

  • GET /users
  • GET /users/:id
  • POST /users
  • PUT /users/:id
  • DELETE /users/:id

4.1.2 /products

  • GET /products
  • GET /products/:id
  • POST /products
  • PUT /products/:id
  • DELETE /products/:id

4.1.3 /orders

  • GET /orders
  • GET /orders/:id
  • POST /orders
  • PUT /orders/:id
  • DELETE /orders/:id

4.1.4 /auth (Hacker Edition)

  • POST /auth

5. Tecnologias utilizadas


Node Js sequelize express postgresql vscode github git

šŸ’» Desenvolvido por Carolina Alvim