Skip to content

guido-marinho/blogs

Repository files navigation

API de Gerenciamento de Blogs

Rodando localmente

Backend:

Clone o projeto

  git clone [email protected]:guilhermegattimarinho/blogs.git

Entre no diretório do projeto

  cd blogs

Entre no diretório de backend

  cd backend

Instale as dependências

  npm install

Iicie os containers com docker

  docker compose up -d --build

Entre no container

  docker exect -it blogs_api bash

Crie o banco de dados

  npm run presart 

Popule as tabelas

  npm run seed

Inicie o servidor

  npm start

Introdução

Bem-vindo à API de Gerenciamento de Blogs! Esta documentação deve ajudá-lo a se familiarizar com os recursos disponíveis e como consumi-los com solicitações HTTP.

Como usar

Para começar usar, crie um usuário ou faça um login

Caso não possua uma conta, deverá criar-la e em seguida efetuar o login

"https://localhost/newUser"
Corpo da requisição: 
    {
        "displayName": "New User",
        "email": "[email protected]",
        "password": "newUserPassword",
        "image": "urlimage" --> opcional <--
    },
    ...

Caso já possua uma conta, basta entrar com usuário e senha

"https://localhost/login"
 Corpo da requisição: 
     {
         "email": "[email protected]",
         "password": "newUserPassword",
     },
     ...

Ao efetuar o login com sucesso, receberá um token como o exemplo abaixo:

    {
        "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6OSwiaWF0IjoxNjk2MzczNDMwLCJleHAiOjE2OTg5NjU0MzB9.B_NiIm-KkbvMQ1_IjQHFUJqn_TzIDbN1mhoK5sTlNVM"
        
    },
    ...

Possuindo um token de acesso, poderá realizar requisições livremente

Exemplos de requisições

"https://localhost/user"

[
  {
      "id": 1,
      "displayName": "Morpheus",
      "email": "[email protected]",
      "image": "http://image.url.com"
  },
  {
      "id": 2,
      "displayName": "Neo",
      "email": "[email protected]",
      "image": "http://image.url.com"
  }
]
"https://localhost/user/1"

  {
      "id": 1,
      "displayName": "Morpheus",
      "email": "[email protected]",
      "image": "http://image.url.com"
  }
"https://api.url.com/categories"

 [
  {
      "id": 1,
      "name": "Hello World"
  },
  {
      "id": 2,
      "name": "Matirx"
  },
 ]
"https://localhost/post"

 [
  {
      "id": 1,
      "title": "Latest updates, August 1st",
      "content": "The whole text for the blog post goes here in this key",
      "userId": 1,
      "published": "2023-10-03T23:26:53.000Z",
      "updated": "2023-10-03T23:26:53.000Z",
      "user": {
          "id": 1,
          "displayName": "morpheus",
          "email": "[email protected]",
          "image": "http://imageurl.com"
      },
      "categories": [
          {
              "id": 1,
              "name": "Hello World"
          },
          {
              "id": 2,
              "name": "Matirx"
          }
      ]
  }
 ]
  "https://localhost/post/1"
    {
        "id": 1,
        "title": "Latest updates, August 1st",
        "content": "The whole text for the blog post goes here in this key",
        "userId": 1,
        "published": "2023-10-03T23:26:53.000Z",
        "updated": "2023-10-03T23:26:53.000Z",
        "user": {
            "id": 1,
            "displayName": "morpheus",
            "email": "[email protected]",
            "image": "http://imageurl.com"
        },
        "categories": [
            {
                "id": 1,
                "name": "Hello World"
            },
            {
                "id": 2,
                "name": "Matirx"
            }
        ]
    }
  "https://localhost/post/search?q=latest"

   [
    {
        "id": 1,
        "title": "Latest updates, August 1st",
        "content": "The whole text for the blog post goes here in this key",
        "userId": 1,
        "published": "2023-10-03T23:26:53.000Z",
        "updated": "2023-10-03T23:26:53.000Z",
        "user": {
            "id": 1,
            "displayName": "morpheus",
            "email": "[email protected]",
            "image": "http://imageurl.com"
        },
        "categories": [
            {
                "id": 1,
                "name": "Hello World"
            },
            {
                "id": 2,
                "name": "Matirx"
            }
        ]
    }
   ]

Rotas

post /newUser -> cria um novo usuario mediante nome, email, senha e imagem(url - opcional)

post /login -> realiza o login de um usuario existente -> gera um barrer token que sera utilizado para acessar as proximas rotas


get /user -> lista com todos os usuarios -> é necessario ussar o token gerado no login na autorizathion
get /user/:id -> lista com usuario correspondente ao id -> é necessario ussar o token gerado no login na autorizathion
put /user/:id -> permite editar as informações de um usuario -> é necessario ussar o token gerado no login na autorizathion
delete /user/:id -> deleta usuario corresondete ao id -> é necessario ussar o token gerado no login na autorizathion

post /categories -> cria uma nova categoria mediante um nome (ex: {name: carros} -> é necessario ussar o token gerado no login na autorizathion
get /categories -> lista com todos as categorias -> é necessario ussar o token gerado no login na autorizathion

post /post -> cria um novo post mediante titulo, corpo e categorias -> é necessario ussar o token gerado no login na autorizathion
get /post -> lista com todos os posts -> é necessario ussar o token gerado no login na autorizathion
get /post/search?q= -> lista com todos os posts correspondentes ao termo de busca -> é necessario ussar o token gerado no login na autorizathion
get /post/:id -> lista com post correspondente ao id -> é necessario ussar o token gerado no login na autorizathion
put /post/:id -> atualiza o post correspondente ao id mediante titulo e corpo -> é necessario ussar o token gerado no login na autorizathion
delete /post/:id -> deleta o post correspondete ao id -> é necessario ussar o token gerado no login na autorizathion

Stack utilizada

Banco de dados relacional: MySQL

Back-end: Node, Express, Sequelize, Docker -> API Rest

Feedback

Se você tiver algum feedback, por favor deixe-me saber por meio de [email protected]

Autores

Licença

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published