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).
- Clone o repositório
[email protected]:trkotovicz/blogs-api.git
- Na raíz do repositório rode o comando
docker-compose up -d
- Entre o terminal do container criado
docker exec -it blogs_api bash
- Instale as dependências do projeto com
npm install
- 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.
Seu token vai ser gerado com a ferramenta JWT ao realizar o login ou cadastrar um novo usuário.
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
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
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
.
Essa rota lista todos os usuários cadastrados.
http://localhost:3000/user
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
Essa rota exibe a lista de categorias cadastradas.
http://localhost:3000/categories
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
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
Essa rota exibe todos os posts do blog.
http://localhost:3000/post
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
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
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
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
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.