natanielsantos159 / blogs-api

Uma API CRUD para um site de blogs, ultizando Express, Node.js e Sequelize

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Blogs API📰

O Blogs API é um CRUD feito pra um site de notícias! 📰

Sumário


Objetivo

Nesse projeto, foi construído um back-end usando ORM com o pacote sequelize do npm, praticando as seguintes habilidades:

  • Criar e associar tabelas usando models do sequelize
  • Construir endpoints para consumir os models que criar
  • Fazer um CRUD com o ORM

Stack utilizada

Node, Express, Sequelize, MySQL

Variáveis de Ambiente

Para rodar esse projeto na sua máquina, você vai precisar adicionar as seguintes variáveis de ambiente no seu .env

HOSTNAME MYSQL_USER MYSQL_PASSWORD JWT_SECRET

Rodando localmente

Clone o projeto

  git clone git@github.com:natanielsantos159/blogs-api.git

Entre no diretório do projeto

  cd blogs-api

Instale as dependências

  npm install

Documentação da API

Posta um novo post

  POST /post
Parâmetro Tipo Descrição
title string Obrigatório. O título do post
content string Obrigatório. O conteúdo do post
categoryIds array Obrigatório. Um array de IDs de categorias

Obter todos os posts

  GET /post
  • Esse endpoint deve listar todas os posts e retorná-los na seguinte estrutura:
[
  {
    "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": "lewishamilton@gmail.com",
      "image": "https://upload.wikimedia.org/wikipedia/commons/1/18/Lewis_Hamilton_2017_Malaysia.jpg"
    },
    "categories": [
      {
        "id": 1,
        "name": "Inovação"
      }
    ]
  }
]

Obter post pelo id

  GET /post/:id
  • Retorna um post com o id especificado. O retorno terá o seguinte formato:
  {
  "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": "lewishamilton@gmail.com",
    "image": "https://upload.wikimedia.org/wikipedia/commons/1/18/Lewis_Hamilton_2016_Malaysia_2.jpg"
  },
  "categories": [
    {
      "id": 1,
      "name": "Inovação"
    }
  ]
}

Editar post pelo id

  PUT /post/:id
Parâmetro Tipo Descrição
title string Opcional. Novo titulo do post
content string Opcional. Novo conteúdo do post

Cadastra um usuário

  POST /user
Parâmetro Tipo Descrição
displayName string Obrigatório. O nome do usuário
email string Obrigatório. O email do usuário
password string Obrigatório. A senha do usuário, no mínimo 6 caracteres
image string Opcional A imagem do perfil

Faz o login do usuário

  POST /login
Parâmetro Tipo Descrição
email string Obrigatório. O email do usuário
password string Obrigatório. A senha do usuário

Cadastra uma nova categoria

  POST /categories
Parâmetro Tipo Descrição
name string Obrigatório. O nome da categoria

Obter todas as categorias

  GET /categories
  • Esse endpoint deve listar todas as Categorias e retorná-las na seguinte estrutura:
[
  {
    "id": 1,
    "name": "Escola"
  },
  {
    "id": 2,
    "name": "Inovação"
  }
]

Feedback

Se você tiver algum feedback, por favor entre em contato por meio de nathan.santos159@hotmail.com

About

Uma API CRUD para um site de blogs, ultizando Express, Node.js e Sequelize


Languages

Language:JavaScript 100.0%