Giter Club home page Giter Club logo

api-blogs-sequelize's Introduction

🖥 Sobre o projeto:

Projeto desenvolvido durante o módulo de backend do curso de desenvolvimento web da @betrybe, realizado em Maio de 2023. Trata-se de uma API REST e um banco de dados para a produção de conteúdo para um blog, sendo possível realizar todas as operações CRUD para as postagens e fazendo uso da autenticação de usuários para editar e publicar posts.

🛠 Tecnologias e libs utilizadas:

As seguintes ferramentas foram utilizadas na construção do projeto:

↗️ Endpoints:

Login (credenciais de acesso)

/login
  • Utiliza o método POST, recebe as informações de acesso no corpo da requisição.
  • Se a requisição não tiver todos os campos devidamente preenchidos, retorna uma mensagem de erro, com um status http 400.
  • Se a requisição receber um par de email e password errados/inexistentes, retorna uma mensagem de erro, com um status http 400.
  • Se o login foi feito com sucesso, retorna um token com um status http 200. O token será necessário em requisições nos endpoints de User, Categories e Post.

User

/user
  • Usando o método GET:

    • Retorna todos os usuários presentes no banco de dados.
    • É necessária a presença de um token válido, que deve estar presente no cabeçalho da requisição.
    • Em caso de sucesso, retorna uma lista contendo os usuários, com um status http 200:
  • Usando o método POST:

    • Adiciona um novo usuário ao banco de dados, as informações de nome, email e senha devem estar presentes no corpo da requisição:
    {
      "displayName": "Brett Wiltshire",
      "email": "[email protected]",
      "password": "123456",
      "image": "http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/brett.png"
      // a imagem não é obrigatória
    }
    • Se a requisição não tiver o campo displayName devidamente preenchido com 8 caracteres ou mais, retorna uma mensagem de erro com um status http 400.
    • Se a requisição não tiver o campo email devidamente preenchido com o formato <prefixo@dominio>, retorna uma mensagem de erro com um status http 400.
    • Se a requisição não tiver o campo password devidamente preenchido com 6 caracteres ou mais, retorna uma mensagem de erro com um status http 400.
    • Se a requisição enviar o campo email com um email que já existe, retorna uma mensagem de erro com um status http 409.
    • Caso o usuário seja criado com sucesso, retorna um token com um status http 201.
/user/id
  • Usando o método GET, retorna o usuário especificado pelo id, caso ele exista no banco de dados.
  • É necessária a presença de um token válido, que deve estar presente no cabeçalho da requisição.
  • Em caso de sucesso, retorna o usuário encontrado, com um status http 200.
  • Se o usuário for inexistente, retorna uma mensagem de erro, com um status http 404.
/user/me
  • Utiliza o método DELETE, deleta o usuário atualmente logado, com base no id presente no token.
  • Como dito acima, é necessária a presença de um token valido no cabeçalho da requisição.
  • Se o usuário for deletado com sucesso, retorna apenas um status http 204.

Categories

/categories
  • Usando o método GET:

    • Retorna todas as categorias presentes no banco de dados.
    • É necessária a presença de um token válido, que deve estar presente no cabeçalho da requisição.
    • Caso não possua um token ou se ele for inválido, retorna uma mensagem de erro com o código 401
    • Ao listar categorias com sucesso o resultado retornado deverá ser conforme exibido abaixo, com um status http 200:
    [
      {
          "id": 1,
          "name": "Inovação"
      },
      {
          "id": 2,
          "name": "Escola"
      },
    
      /* ... */
    ]
  • Usando o método POST:

    • Adiciona uma nova categoria na tabela no banco de dados. O nome da nova categoria deve estar presente no corpo da requisição.
    • Em caso de sucesso, retorna um objeto contendo o id e o nome da categoria criada, com um status http 201.
    • É necessária a presença de um token válido.
    • Se a requisição não tiver o campo name devidamente preenchidos(não pode haver campo em branco), deve retornar uma mensagem de erro, com um status http 400.

Post

/post
  • Usando o método GET:
    • Retorna uma lista contendo todos os blog posts presentes no banco de dados, cada blog post contendo informações como o autor e categorias do post.
    • É necessária a presença de um token válido, que deve estar presente no cabeçalho da requisição.
    • Em caso de sucesso, retorna a lista com um status http 200.
  • Usando o método POST:
    • Adiciona um novo blog post e vincula-o às categorias em suas presentes no banco de dados.
    • É necessária a presença de um token válido, que deve estar presente no cabeçalho da requisição.
    • Corpo da requisição deve obedecer o seguinte formato:
    {
      "title": "Latest updates, August 1st",
      "content": "The whole text for the blog post goes here in this key",
      "categoryIds": [1, 2]
    }
    • Se a requisição não tiver todos os campos devidamente preenchidos, retorna uma mensagem de erro, com um status http 400.
    • Se a requisição não tiver o campo categoryIds devidamente preenchido com um array com todas as categorias existentes, retorna um erro , com um status http 400.
    • Se o blog post for criado com sucesso o resultado retornado deverá ser conforme exibido abaixo, com um status http 201:
    {
      "id": 3,
      "title": "Latest updates, August 1st",
      "content": "The whole text for the blog post goes here in this key",
      "userId": 1,
      "updated": "2022-05-18T18:00:01.196Z",
      "published": "2022-05-18T18:00:01.196Z"
    }
/post/id
  • Usando o método GET:

    • Retorna o blog post especificado pelo id, caso ele exista no banco de dados.
    • É necessária a presença de um token válido, que deve estar presente no cabeçalho da requisição.
    • Em caso de sucesso, retorna o blog post encontrado, com um status http 200.
    • Se o blog post for inexistente, retorna uma mensagem de erro, com um status http 404.
  • Usando o método PUT:

    • Modifica um blog post, caso ele exista, com as informações presentes no corpo da requisição.
    • É necessária a presença de um token válido, que deve estar presente no cabeçalho da requisição.
    • Só será permitida a alteração do blog post caso a pessoa usuária seja a autora dele. Isso será validado pelo token inserido.
    • Somente os campos title e content poderão ser alterados.
    • O corpo da requisição deve ter o seguinte formato:
    {
      "title": "Latest updates, August 1st",
      "content": "The whole text for the blog post goes here in this key"
    }
    • Se o blog post for alterado com sucesso, retorna o blog post alterado, com um status http 200.
  • Usando o método DELETE:

    • Remove o blog post especificado pelo id, caso ele exista.
    • Só será permitida a remoção do blog post caso a pessoa usuária seja a autora dele. Isso será validado pelo token inserido.
    • É necessária a presença de um token válido, que deve estar presente no cabeçalho da requisição.
    • Se o post for inexistente, retorna uma mensagem de erro, com um status http 404.
    • Em caso de sucesso, não retorna nenhuma resposta, apenas um status http 204.

👾Autor


Guilherme Lucena

✉contato:

api-blogs-sequelize's People

Contributors

gui-lfm avatar henriquebaetaleite avatar pauloricardoz avatar trybe-tech-ops avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.