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.
login | |
---|---|
šØ | admin@krustyKrab.com |
š | 123456 |
- 1. Resumo
- 2. Proposta do projeto
- 3. Diagrama Entidade Relacionamento
- 4. Endpoints
- 5. Tecnologias utilizadas
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.
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.
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
Ć 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
.
Um usuĆ”rio jĆ” cadastrado no sistma poderĆ” criar um novo token de acesso ao fazer uma requisiĆ§Ć£o no endpoint /Auth.
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.
Foi utilizado o Swagger para escrever a documentaĆ§Ć£o.
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.
Conforme foi estabelecido no desenvolvimento do desafio, a API possui os seguintes endpoints:
GET /users
GET /users/:id
POST /users
PUT /users/:id
DELETE /users/:id
GET /products
GET /products/:id
POST /products
PUT /products/:id
DELETE /products/:id
GET /orders
GET /orders/:id
POST /orders
PUT /orders/:id
DELETE /orders/:id
POST /auth
š» Desenvolvido por Carolina Alvim