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.
As seguintes ferramentas foram utilizadas na construção do projeto:
/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
emailepassworderrados/inexistentes, retorna uma mensagem de erro, com um status http400. - 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
-
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": "brett@email.com", "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
displayNamedevidamente preenchido com 8 caracteres ou mais, retorna uma mensagem de erro com um status http400. - Se a requisição não tiver o campo
emaildevidamente preenchido com o formato<prefixo@dominio>, retorna uma mensagem de erro com um status http400. - Se a requisição não tiver o campo
passworddevidamente preenchido com 6 caracteres ou mais, retorna uma mensagem de erro com um status http400. - Se a requisição enviar o campo
emailcom um email que já existe, retorna uma mensagem de erro com um status http409. - 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
-
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
namedevidamente preenchidos(não pode haver campo em branco), deve retornar uma mensagem de erro, com um status http400.
/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
categoryIdsdevidamente preenchido com um array com todas as categorias existentes, retorna um erro , com um status http400. - 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.
Guilherme Lucena