Code Monkey home page Code Monkey logo

blogs-api's Introduction

Blogs API

O Blogs API é uma ma API REST e um banco de dados para a produção de conteúdo para um blog, onde você pode fazer requisições HTTP para criar, consultar, atualizar e deletar posts, categorias e usuários de um blog. Tem autenticação de usuário, com JWT (Json Web Token), e você só pode alterar um post que você mesmo criou.
Ele foi desenvolvido em JS, utilizando o banco de dados MySQL, com Express e o ORM Sequelize. Utiliza a arquitetura de camadas MSC (Modell-Service-Controller).

Inicialização via Docker 🐳

  1. Clone o repositório [email protected]:trkotovicz/blogs-api.git
  2. Na raíz do repositório rode o comando docker-compose up -d
  3. Entre o terminal do container criado docker exec -it blogs_api bash
  4. Instale as dependências do projeto com npm install
  5. Inicie a aplicação dentro do container npm start

O servidor vai estar rodando na porta local 3000 (http://localhost:3000).
Utilize o cliente de requisições HTTP de sua preferência para fazer as requisições.

Rotas

⚠️ Alguns endpoints vão precisar de uma autenticação prévia, para que seja possível consumir o endpoint.
Seu token vai ser gerado com a ferramenta JWT ao realizar o login ou cadastrar um novo usuário.

POST /login

O endpoint recebe no corpo da requisição os campos email e password e retorna um token aleatório de 16 caracteres.
A requisição deve ter o body com um email e uma senha válidos. Exemplo:

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

http://localhost:3000/login


POST /user

Nessa rota o usuário pode cadastrar um novo usuário. A requisição valida o login através do token gerado.
O corpo da requisição deve ter o seguinte formato:

  {
    "displayName": "Bruce Wayne",
    "email": "[email protected]",
    "password": "batman"
    "image": "https://cdn.icon-icons.com/icons2/1736/PNG/512/4043232-avatar-batman-comics-hero_113278.png"
  }

http://localhost:3000/user


⚠️ Autenticação de usuário

As rotas abaixo irão utilizar o token de validação gerado no login.
Para isso, adicione o token de autenticação no Headers do seu cliente de requisições, na chave Authorization.


GET /user

Essa rota lista todos os usuários cadastrados.

http://localhost:3000/user


GET /user/:id

Essa rota exibe um usuário com base no id do endpoint.
Para isso, substitua no endpoint o :id pelo id de usuário que você deseja buscar (o id deve ser um número inteiro).

http://localhost:3000/user/:id


GET /categories

Essa rota exibe a lista de categorias cadastradas.

http://localhost:3000/categories


DELETE /user/me

Nessa rota o usuário pode deletar sua conta.
É verificado através do token o usuário logado e então ele é excluído da base de dados.

http://localhost:3000/user/me


POST /categories

Nessa rota o usuário pode cadastrar uma nova categoria de post.
O corpo da requisição deve ter o seguinte formato:

  {
    "name": "Nova categoria"
  }

http://localhost:3000/user


GET /post

Essa rota exibe todos os posts do blog.

http://localhost:3000/post


GET /post/:id

Essa rota exibe um um post com base no id do endpoint.
Para isso, substitua no endpoint o :id pelo id do post que você deseja buscar (o id deve ser um número inteiro).

http://localhost:3000/post/:id


POST /post

O endpoint permite o usuário criar um novo post.
O corpo da requisição deve ter um título, o conteúdo do post e os ids das categorias do post. Exemplo:

  {
	  "title": "Novo post no blog",
	  "content": "Um conteúdo bem legal aqui",
	  "categoryIds": [1]
  }

http://localhost:3000/post


PUT /post/:id

Nessa rota o usuário pode alterar um post publicado por ele.
É verificado se o usuário autor do post é o mesmo usuário logado, caso seja, o post é alterado com sucesso.
Para isso, substitua no endpoint o :id pelo id do post que você deseja alterar (o id deve ser um número inteiro).

http://localhost:3000/post/:id


DELETE /post/:id

Nessa rota o usuário pode excluir uma publicação feita por ele.
É verificado se o usuário autor do post é o mesmo usuário logado, caso seja, o post é excluído com sucesso.
Para isso, substitua no endpoint o :id pelo id do post que você deseja alterar (o id deve ser um número inteiro).

http://localhost:3000/post/:id


GET /post/search

Essa rota é reponsável por buscar posts através de palavras chaves ou frases.
Para isso, adicione uma chave com o valor q no campo Query do seu cliente de requisições HTTP, em seguida adicione o valor que você deseja buscar nos posts.
Caso nenhum valor seja passado, ele retornará todos os posts do blog.

http://localhost:3000/post/search


Projeto desenvolvido por Thais R Kotovicz.

blogs-api's People

Contributors

iagopferreira avatar trkotovicz 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.