Skip to content

API Restful de um Blog com NodeJs, Express, Sequelize e JWT com o banco de dados MySQL utilizando a estrutura ORM e MSC.

Notifications You must be signed in to change notification settings

michaelcaxias/blogs-api

Repository files navigation

exemplo imagem

Blogs API

Projeto feito no curso Trybe com objetivo de criar um CRUD a partir da criação de uma API RESTful utilizando as estruturas ORM e MSC.

⭐ Habilidades

  • Utilizar as habilidades de associação do MySQL.
  • Criar uma API utilizando o Sequelize e NodeJs.
  • Validar e criptografar tokens de autenticação com o JWT.
  • Realizar validações com o Joi.

💻 Como iniciar

  1. Faça o clone do projeto
  2. Entre no Visual Studio Code
  3. Instale as dependências
npm install
  1. Inicie a aplicação
npm run debug

💡 Documentação da API

Cadastra um usuário

  POST /user
Corpo da requisição Tipo Descrição
displayName, email, password, image json Obrigatório. Todos os campos do corpo da requisição

Formato do corpo da requisição

{
  "displayName": "Nome da Pessoa",
  "email": "[email protected]",
  "password": "123456",
  "image": "http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/imagem.png"
}

Retorno em caso de sucesso

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXlsb2FkIjp7ImlkIjo1LCJkaXNwbGF5TmFtZSI6InVzdWFyaW8gZGUgdGVzdGUiLCJlbWFpbCI6InRlc3RlQGVtYWlsLmNvbSIsImltYWdlIjoibnVsbCJ9LCJpYXQiOjE2MjAyNDQxODcsImV4cCI6MTYyMDY3NjE4N30.Roc4byj6mYakYqd9LTCozU1hd9k_Vw5IWKGL4hcCVG8"
}

O retorno acima é apenas fictício

Retorna todos os usuários

  GET /user/

⚠️ Para fazer uma requisição é necessário estar com a chave Authentication com o token JWT recebido anteriormente

Retorno em caso de sucesso

[
  {
    "id": "401465483996",
    "displayName": "Brett Wiltshire",
    "email": "[email protected]",
    "image": "http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/brett.png"
  }
]
Descrição
Será retornado um array com todos os usuários do banco de dados

Retorna um usuário

  GET /user/${id}

⚠️ Para fazer uma requisição é necessário estar com a chave Authentication com o token JWT recebido anteriormente

Parâmetro Tipo Descrição
id string Obrigatório. O ID do usuário que você quer

Retorno em caso de sucesso

{
  "id": "401465483996",
  "displayName": "Brett Wiltshire",
  "email": "[email protected]",
  "image": "http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/brett.png"
}
Descrição
Será retornado o usuário com o id especificado

Logar de acordo com o banco de dados

  POST /login
Corpo da requisição Tipo Descrição
email, password json Obrigatório. Todos os campos do Corpo da requisição devem existir no banco de dados

Formato do corpo da requisição

{
  "email": "[email protected]",
  "password": "123456"
}

Retorno em caso de sucesso

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXlsb2FkIjp7ImlkIjo1LCJkaXNwbGF5TmFtZSI6InVzdWFyaW8gZGUgdGVzdGUiLCJlbWFpbCI6InRlc3RlQGVtYWlsLmNvbSIsImltYWdlIjoibnVsbCJ9LCJpYXQiOjE2MjAyNDQxODcsImV4cCI6MTYyMDY3NjE4N30.Roc4byj6mYakYqd9LTCozU1hd9k_Vw5IWKGL4hcCVG8"
}

O retorno acima é apenas fictício

Cadastra uma nova categoria

  POST /categories
Corpo da requisição Tipo Descrição
name json Obrigatório. O nome da categoria deve ser obrigatório

⚠️ Para fazer uma requisição é necessário estar com a chave Authentication com o token JWT recebido anteriormente

Formato do corpo da requisição

 {
   "name": "Ação"
 }

Retorno em caso de sucesso

{
  "id": 1
  "name": "Ação"
}

Retorna todas as categorias

  GET /categories

⚠️ Para fazer uma requisição é necessário estar com a chave Authentication com o token JWT recebido anteriormente

Retorno em caso de sucesso

[
  {
    "id": 1,
    "name": "Escola"
  },
  {
    "id": 2,
    "name": "Inovação"
  }
]
Descrição
Será retornado todas as categorias do Banco de Dados

Cadastra uma nova publicação

  POST /post
Corpo da requisição Tipo Descrição
title, content, categoryIds json Obrigatório. Todos os campos devem ser obrigatórios

⚠️ Para fazer uma requisição é necessário estar com a chave Authentication com o token JWT recebido anteriormente

Formato do corpo da requisição

{
  "title": "Titulo da publicação",
  "content": "Conteudo da publicação aqui",
  "categoryIds": [1, 2] //id das categorias criadas anteiormente, deve ser somente um array.
}

Retorno em caso de sucesso

{
  "id": "$id da publicação",
  "userId": 1, // usuário autenticado
  "title": "Titulo da publicação",
  "content": "Conteudo da publicação aqui"
}

Retorna todos as publicações

  GET /categories

⚠️ Para fazer uma requisição é necessário estar com a chave Authentication com o token JWT recebido anteriormente

Retorno em caso de sucesso

[
  {
    "id": 1,
    "title": "Post do Ano",
    "content": "Melhor post do ano",
    "userId": 1,
    "published": "2011-08-01T19:58:00.000Z",
    "updated": "2011-08-01T19:58:51.000Z",
    "user": {
      "id": 1,
      "displayName": "Lewis Hamilton",
      "email": "[email protected]",
      "image": "https://upload.wikimedia.org/wikipedia/commons/1/18/Lewis_Hamilton_2017_Malaysia.jpg"
    },
    "categories": [
      {
        "id": 1,
        "name": "Inovação"
      }
    ]
  }
]
Descrição
Será retornado todas as publicações do Banco de Dados, com sua categoria e o autor

Feito Com:

IDE NODEJS SEQUELIZE MYSQL

Contato

Linkedin

Copyright © 2021 Michael Caxias

About

API Restful de um Blog com NodeJs, Express, Sequelize e JWT com o banco de dados MySQL utilizando a estrutura ORM e MSC.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published