Git Product home page Git Product logo

blogs-api's Introduction

API de Blogs!


Habilidades

Nesse projeto, você vai construir um back-end usando ORM com o pacote sequelize do npm, e será capaz de:

  • Criar e associar tabelas usando models do sequelize
  • Construir endpoints para consumir os models que criar
  • Fazer um CRUD com o ORM

O que deverá ser desenvolvido

Você vai arquiteturar e desenvolver uma API de um CRUD posts de blog (com o Sequelize). Começando pela API, você vai desenvolver alguns endpoints (seguindo os princípios do REST) que estarão conectados ao seu banco de dados.

Primeiro, você irá criar uma tabela para os usuários que desejam se cadastrar na aplicação. Após isso, criará também uma tabela de Categorias para seus Posts e por fim a tabela de Posts será seu foco, guardando todas as informações dos posts realizados na plataforma. Essa é apenas uma recomendação!


Execução de testes unitários

Vamos usar o Jest para executar os testes, use o comando a seguir para executar todos os testes:

npm test

Caso queira executar só um arquivo de test use o seguinte comando, considerado que quer testar o arquivo tests/req07-createPost.test.js:

npm test tests/req07-createPost.test.js

ou

npm test req07

Status HTTP

Tenha em mente que todas as "respostas" devem respeitar os status do protocolo HTTP com base no que o REST prega.

Alguns exemplos:

  • Requisições que precisam de token mas não o receberam devem retornar um código de status 401;

  • Requisições que não seguem o formato pedido pelo servidor devem retornar um código de status 400;

  • Um problema inesperado no servidor deve retornar um código de status 500;

  • Um acesso ao criar um recurso, no nosso caso usuário ou post, deve retornar um código de status 201.


Os seguintes pontos serão avaliados:

  • O seu projeto deverá usar um ORM para criar e atualizar o seu banco. A clonagem do projeto seguida de um comando de migrate deve deixá-lo em sua forma esperada.

  • Deve conter uma tabela chamada Users, contendo dados com a seguinte estrutura::

    {
      "id": 1,
      "displayName": "Brett Wiltshire",
      "email": "[email protected]", // tem quer ser único
      "password": "123456",
      "image": "http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/brett.png"
    }
  • Deve conter uma tabela chamada Categories, contendo dados com a seguinte estrutura::

    {
      "id": 18,
      "name": "News"
    }
  • Deve conter uma tabela chamada PostsCategories, contendo dados com a seguinte estrutura:

    {
      "postId": 50,
      "categoryId": 20
    }
  • Deve conter uma tabela chamada BlogPosts, contendo dados com a seguinte estrutura::

    {
      "id": 21,
      "title": "Latest updates, August 1st",
      "content": "The whole text for the blog post goes here in this key",
      "userId": 14, // esse é o id que referência usuário que é o autor do post
      "published": "2011-08-01T19:58:00.000Z",
      "updated": "2011-08-01T19:58:51.947Z",
    }

    Os dados acima são fictícios, e estão aqui apenas como exemplo

    OBS: Os testes irão rodar através do seu migrate usando os seguintes comandos:

    "drop": "npx sequelize-cli db:drop $" -- Dropa o banco

    "prestart": "npx sequelize-cli db:create && npx sequelize-cli db:migrate $" -- Cria o banco e gera as tabelas

    "seed": "npx sequelize-cli db:seed:all $", -- Insere dados na tabela

    Então preste bastante atenção se estiver errado o avaliador não irá funcionar

    Haverá um arquivo na pasta /seeders dentro dela irá conter as querys para inserir no banco não remova ela o avaliador irá usar ela.

Lista de Requisitos:

1 - Sua aplicação deve ter o endpoint POST /user

Os seguintes pontos serão avaliados:

  • O endpoint deve ser capaz de adicionar um novo user a sua tabela no banco de dados;

  • O corpo da requisição deverá ter o seguinte formato:

    {
      "displayName": "Brett Wiltshire",
      "email": "[email protected]",
      "password": "123456",
      "image": "http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/brett.png"
    }
  • O campo displayName deverá ser uma string com no mínimo de 8 caracteres;

  • O campo email será considerado válido se tiver o formato <prefixo>@<domínio> e se for único. Ele é obrigatório.

  • A senha deverá conter 6 caracteres. Ela é obrigatória.

  • Caso exista uma pessoa com o mesmo email na base, deve-se retornar o seguinte erro:

    {
      "message": "User already registered"
    }
  • Caso contrário, retornar a mesma resposta do endpoint de /login, um token JWT:

    {
      "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXlsb2FkIjp7ImlkIjo1LCJkaXNwbGF5TmFtZSI6InVzdWFyaW8gZGUgdGVzdGUiLCJlbWFpbCI6InRlc3RlQGVtYWlsLmNvbSIsImltYWdlIjoibnVsbCJ9LCJpYXQiOjE2MjAyNDQxODcsImV4cCI6MTYyMDY3NjE4N30.Roc4byj6mYakYqd9LTCozU1hd9k_Vw5IWKGL4hcCVG8"
    }

    O token anterior é fictício

Além disso, as seguintes verificações serão feitas:

[Será validado que é possível cadastrar um usuário com sucesso]

Se o usuário for criado com sucesso o resultado retornado deverá ser conforme exibido abaixo, com um status http 201:

Cadastro com sucesso

[Será validado que não é possível cadastrar usuário com o campo displayName menor que 8 caracteres]

Se o usuário tiver o campo "displayName" menor que 8 caracteres o resultado retornado deverá ser conforme exibido abaixo, com um status http 400:

Nome menor que 8 (As contrabarras \ estão escapando as aspas de dentro da string)

[Será validado que não é possível cadastrar usuário com o campo email com formato email: rubinho]

Se o usuário tiver o campo "email" com o formato email: rubinho o resultado retornado deverá ser conforme exibido abaixo, com um status http 400:

Email inválido (As contrabarras \ estão escapando as aspas de dentro da string)

[Será validado que não é possível cadastrar usuário com o campo email com formato email: @gmail.com]

Se o usuário tiver o campo "email" com o formato email: @gmail.com o resultado retornado deverá ser conforme exibido abaixo, com um status http 400:

Email inválido (As contrabarras \ estão escapando as aspas de dentro da string)

[Será validado que o campo email é obrigatório]

Se o usuário não tiver campo "email" o resultado retornado deverá ser conforme exibido abaixo, com um status http 400:

Email obrigatório (As contrabarras \ estão escapando as aspas de dentro da string)

[Será validado que não é possível cadastrar usuário com o campo password diferente de 6 caracteres]

Se o usuário tiver o campo "password" menor ou maior que 6 caracteres o resultado retornado deverá ser conforme exibido abaixo, com um status http 400:

Senha menor que 6 (As contrabarras \ estão escapando as aspas de dentro da string)

[Será validado que o campo password é obrigatório]

Se o usuário não tiver campo "password" o resultado retornado deverá ser conforme exibido abaixo, com um status http 400:

Senha Obrigatória (As contrabarras \ estão escapando as aspas de dentro da string)

[Validar que não é possível cadastrar um usuário com email já existente]

Se o usuário cadastrar o campo "email" com um email que já existe, o resultado retornado deverá ser conforme exibido abaixo, com um status http 409:

Usuário Existente

2 - Sua aplicação deve ter o endpoint POST /login

Os seguintes pontos serão avaliados:

  • O corpo da requisição deverá seguir o formato abaixo:

    {
      "email": "[email protected]",
      "password": "123456"
    }
  • Caso algum desses campos seja inválido ou não exista um usuário correspondente no banco de dados, retorne um código de status 400 com o corpo { message: "Campos inválidos" }.

  • Caso esteja tudo certo com o login, a resposta deve ser um token JWT, no seguinte formato:

    {
      "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXlsb2FkIjp7ImlkIjo1LCJkaXNwbGF5TmFtZSI6InVzdWFyaW8gZGUgdGVzdGUiLCJlbWFpbCI6InRlc3RlQGVtYWlsLmNvbSIsImltYWdlIjoibnVsbCJ9LCJpYXQiOjE2MjAyNDQxODcsImV4cCI6MTYyMDY3NjE4N30.Roc4byj6mYakYqd9LTCozU1hd9k_Vw5IWKGL4hcCVG8"
    }

    O token anterior é fictício

Além disso, as seguintes verificações serão feitas:

[Será validado que é possível fazer login com sucesso]

Se o login foi feito com sucesso o resultado retornado deverá ser conforme exibido abaixo, com um status http 200:

Login com sucesso

[Será validado que não é possível fazer login sem o campo email]

Se o login não tiver o campo "email" o resultado retornado deverá ser conforme exibido abaixo, com um status http 400:

Sem login (As contrabarras \ estão escapando as aspas de dentro da string)

[Será validado que não é possível fazer login sem o campo password]

Se o login não tiver o campo "password" o resultado retornado deverá ser conforme exibido abaixo, com um status http 400:

Sem senha (As contrabarras \ estão escapando as aspas de dentro da string)

[Será validado que não é possível fazer login com o campo email em branco]

Se o login tiver o campo "email" em branco o resultado retornado deverá ser conforme exibido abaixo, com um status http 400:

Email em branco (As contrabarras \ estão escapando as aspas de dentro da string)

[Será validado que não é possível fazer login com o campo password em branco]

Se o login tiver o campo "password" em branco o resultado retornado deverá ser conforme exibido abaixo, com um status http 400:

Senha em branco (As contrabarras \ estão escapando as aspas de dentro da string)

[Será validado que não é possível fazer login com um usuário que não existe]

Se o login for com usuário inexistente o resultado retornado deverá ser conforme exibido abaixo, com um status http 400:

Usuário não existe

3 - Sua aplicação deve ter o endpoint GET /user

Os seguintes pontos serão avaliados:

  • Deve listar todos os Users e retorná-los na seguinte estrutura:

    [
      {
        "id": "401465483996",
        "displayName": "Brett Wiltshire",
        "email": "[email protected]",
        "image": "http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/brett.png"
      }
    ]
  • A requisição deve ter token de autenticação nos headers e, caso contrário, retorne um código de status 401.

Além disso, as seguintes verificações serão feitas:

[Será validado que é possível listar todos os usuários]

Ao listar usuários com sucesso o resultado retornado deverá ser conforme exibido abaixo, com um status http 200:

Listar usuários

[Será validado que não é possível listar usuários sem o token na requisição]

Se o token for inexistente o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

Token Vazio

[Será validado que não é possível listar usuários com o token inválido]

Se o token for inválido o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

Token inválido

4 - Sua aplicação deve ter o endpoint GET /user/:id

Os seguintes pontos serão avaliados:

  • Retorna os detalhes do usuário baseado no id da rota. Os dados devem ter o seguinte formato:

    {
      "id": "401465483996",
      "displayName": "Brett Wiltshire",
      "email": "[email protected]",
      "image": "http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/brett.png"
    }
  • A requisição deve ter token de autenticação nos headers e, caso contrário, retorne um código de status 401.

Além disso, as seguintes verificações serão feitas:

[Será validado que é possível listar um usuário específico com sucesso]

Ao listar um usuário com sucesso o resultado retornado deverá ser conforme exibido abaixo, com um status http 200:

Listar um usuário

[Será validado que não é possível listar um usuário inexistente]

Se o usuário for inexistente o resultado retornado deverá ser conforme exibido abaixo, com um status http 404:

Listar um usuário inexistente

[Será validado que não é possível listar um determinado usuário sem o token na requisição]

Se o token for inexistente o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

Listar um usuário sem token

[Será validado que não é possível listar um determinado usuário com o token inválido]

Se o token for inválido o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

Listar um usuário com token inválido

5 - Sua aplicação deve ter o endpoint POST /categories

Os seguintes pontos serão avaliados:

  • Esse endpoint deve receber uma Categoria no corpo da requisição e criá-la no banco. O corpo da requisição deve ter a seguinte estrutura:
 {
   "name": "Inovação"
 }
  • Caso a Categoria não contenha o name a API deve retornar um erro de status 400.

  • A requisição deve ter o token de autenticação nos headers e, caso contrário, retorne um código de status 401.

Além disso, as seguintes verificações serão feitas:

[Será validado que é possível cadastrar uma categoria com sucesso]

Se cadastrar uma categoria com sucesso o resultado retornado deverá ser conforme exibido abaixo, com um status http 201:

Criar categoria com sucesso

[Será validado que não é possível cadastrar uma categoria sem o campo name]

Se ao tentar cadastrar uma categoria sem o campo name o resultado retornado deverá ser conforme exibido abaixo, com um status http 400: Criar categoria com sucesso

[Será validado que não é possível cadastrar uma determinada categoria com o token inválido]

Se o token for inválido o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

Cadastrar uma categoria com token inválido

[Será validado que não é possível cadastrar uma determinada categoria sem o token na requisição]

Se o token for inexistente o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

Cadastrar uma categoria sem token

6 - Sua aplicação deve ter o endpoint GET /categories

Os seguintes pontos serão avaliados:

  • Esse endpoint deve listar todas as Categorias e retorná-las na seguinte estrutura:
[
  {
    "id": 1,
    "name": "Escola"
  },
  {
    "id": 2,
    "name": "Inovação"
  }
]

Além disso, as seguintes verificações serão feitas: [Será validado que é possível listar todas as categoria com sucesso]

Se buscar todas as categorias com sucesso o resultado retornado deverá ser conforme exibido abaixo, com um status http 200:

Buscar todas as categoria com sucesso

[Será validado que não é possível listar as categorias com o token inválido]

Se o token for inválido o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

Buscar uma categoria com token inválido

[Será validado que não é possível cadastrar uma determinada categoria sem o token na requisição]

Se o token for inexistente o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

Buscar uma categoria sem token

7 - Sua aplicação deve ter o endpoint POST /post

Os seguintes pontos serão avaliados:

  • Esse endpoint deve receber um BlogPost no corpo da requisição e criá-lo no banco. O corpo da requisição deve ter a seguinte estrutura:

    {
      "title": "Latest updates, August 1st",
      "content": "The whole text for the blog post goes here in this key",
      "categoryIds": [1, 2]
    }
  • Caso o post não contenha o title, content ou categoryIds a API deve retornar um erro de status 400.

  • A requisição deve ter o token de autenticação nos headers e, caso contrário, retorne um código de status 401.

Além disso, as seguintes verificações serão feitas:

[Será validado que é possível cadastrar um blogpost com sucesso]

Se cadastrar um blogpost com sucesso o resultado retornado deverá ser conforme exibido abaixo, com um status http 201:

Criar blogspot com sucesso

[Será validado que não é possível cadastrar um blogpost sem o campo title]

Se não conter o campo title o resultado retornado deverá ser conforme exibido abaixo, com um status http 400:

blogpost sem content

[Será validado que não é possível cadastrar um blogpost sem o campo content]

Se não conter o campo content o resultado retornado deverá ser conforme exibido abaixo, com um status http 400:

blogpost sem content

[Será validado que não é possível cadastrar um blogpost sem o campo categoryIds]

Se não conter o campo categoryIds o resultado retornado deverá ser conforme exibido abaixo, com um status http 400:

blogpost sem categoryId

[Será validado que não é possível cadastrar um blogpost com uma categoryIds inexistente]

Se o campo categoryIds tiver uma categoria inexistente, o resultado retornado deverá ser conforme exibido abaixo, com um status http 400:

blogpost categoryId invalida

[Será validado que não é possível cadastrar um blogpost sem o token]

Se não conter o token o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

blogpost sem token

[Será validado que não é possível cadastrar um blogpost com o token inválido]

Se o token for inválido o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

blogpost com token inválido

8 - Sua aplicação deve ter o endpoint GET /post

Os seguintes pontos serão avaliados:

  • Esse endpoint deve listar todos os BlogPosts e retorná-los na seguinte estrutura:
[
  {
    "id": 1,
    "title": "Post do Ano",
    "content": "Melhor post do ano",
    "userId": 1,
    "published": "2011-08-01T19:58:00.000Z",
    "updated": "2011-08-01T19:58:51.000Z",
    "user": {
      "id": 1,
      "displayName": "Lewis Hamilton",
      "email": "[email protected]",
      "image": "https://upload.wikimedia.org/wikipedia/commons/1/18/Lewis_Hamilton_2017_Malaysia.jpg"
    },
    "categories": [
      {
        "id": 1,
        "name": "Inovação"
      }
    ]
  }
]

Além disso, as seguintes verificações serão feitas:

[Será validado que é possível listar blogpost com sucesso]

Se listar os blogpost com sucesso o resultado retornado deverá ser conforme exibido abaixo, com um status http 200:

Criar blogspot com sucesso

[Será validado que não é possível listar blogpost sem token]

Se não conter o token o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

blogpost sem token

[Será validado que não é possível listar blogpost com token inválido]

Se o token for inválido o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

blogpost com token inválido

9 - Sua aplicação deve ter o endpoint GET post/:id

Os seguintes pontos serão avaliados:

  • Retorna um BlogPost com o id especificado. O retorno deve ter os seguinte formato:
  {
  "id": 1,
  "title": "Post do Ano",
  "content": "Melhor post do ano",
  "userId": 1,
  "published": "2011-08-01T19:58:00.000Z",
  "updated": "2011-08-01T19:58:51.000Z",
  "user": {
    "id": 1,
    "displayName": "Lewis Hamilton",
    "email": "[email protected]",
    "image": "https://upload.wikimedia.org/wikipedia/commons/1/18/Lewis_Hamilton_2016_Malaysia_2.jpg"
  },
  "categories": [
    {
      "id": 1,
      "name": "Inovação"
    }
  ]
}

Além disso, as seguintes verificações serão feitas:

[Será validado que é possível listar um blogpost com sucesso]

Se listar um blogpost com sucesso o resultado retornado deverá ser conforme exibido abaixo, com um status http 200:

Listar um post com sucesso

[Será validado que não é possível listar um blogpost sem token]

Se não conter o token o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

blogpost com token inválido

[Será validado que não é possível listar um blogpost com token inválido]

Se o token for inválido o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

blogpost com token inválido

[Será validado que não é possível listar um blogpost inexistente]

Se o id do post for inválido o resultado retornado deverá ser conforme exibido abaixo, com um status http 404:

Listar um post inexistente

10 - Sua aplicação deve ter o endpoint PUT /post/:id

Os seguintes pontos serão avaliados:

  • O endpoint deve receber um BlogPost que irá sobrescrever o original com o id especificado na URL. Só deve ser permitido para o usuário que criou o BlogPost.

  • A(s) categoria(s) do post não podem ser editadas, somente o title e content.

  • O corpo da requisição deve ter a seguinte estrutura:

    {
      "title": "Latest updates, August 1st",
      "content": "The whole text for the blog post goes here in this key"
    }
  • Caso uma pessoa diferente de quem criou faça a requisição, deve retornar um código status 401.

  • Caso uma requisição sem token seja recebida, deve-se retornar um código de status 401.

  • Caso o post não contenha o title e/ou o content a API deve retornar um erro de status 400.

Além disso, as seguintes verificações serão feitas:

[Será validado que é possível editar um blogpost com sucesso]

Se editar um blogpost com sucesso o resultado retornado deverá ser conforme exibido abaixo, com um status http 200:

blogpost com token inválido

[Será validado que não é possível editar as categorias de um blogpost]

Só será possível editar o título ou o conteúdo de um post.

editar com campo categorias

[Será validado que não é possível editar um blogpost com outro usuário]

Somente o usuário que criou o post poderá editá-lo.

blogpost com token inválido

[Será validado que não possível editar um blogpost sem token]

Se não conter o token o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

blogpost com token inválido

[Será validado que não possível editar um blogpost com token inválido]

Se o token for inválido o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

blogpost com token inválido

[Será validado que não possível editar um blogpost sem o campo title]

Se não conter o campo title o resultado retornado deverá ser conforme exibido abaixo, com um status http 400:

blogpost com token inválido

[Será validado que não possível editar um blogpost sem o campo content]

Se não conter o campo content o resultado retornado deverá ser conforme exibido abaixo, com um status http 400:

blogpost com token inválido

Requisitos Bônus

11 - Sua aplicação deve ter o endpoint DELETE post/:id

Os seguintes pontos serão avaliados:

  • Deleta o post com o id especificado. Só deve ser permitido para o usuário que criou o BlogPost.

  • Caso uma pessoa diferente de quem criou faça a requisição, deve retornar um código status 401.

  • Caso uma requisição sem token seja recebida, deve-se retornar um código de status 401.

  • Caso o post referido não exista, deve-se retornar um código de status 404.

Além disso, as seguintes verificações serão feitas:

[Será validado que é possível deletar um blogpost com sucesso]

Se deletar blogpost com sucesso o resultado retornado deverá ser conforme exibido abaixo, com um status http 204:

blogpost com token inválido

[Será validado que não é possível deletar um blogpost com outro usuário]

Se não for o dono do blogpost o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

blogpost com token inválido

[Será validado que não é possível deletar um blogpost inexistente]

Se o blogpost nao existir o resultado retornado deverá ser conforme exibido abaixo, com um status http 404:

blogpost com token inválido

[Será validado que não é possível deletar um blogpost sem o token]

Se não contém o token o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

blogpost com token inválido

[Será validado que não é possível deletar um blogpost com o token inválido]

Se o token for inválido o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

blogpost com token inválido

12 - Sua aplicação deve ter o endpoint DELETE /user/me

Os seguintes pontos serão avaliados:

  • Utilizando o token de autenticação nos headers, o usuário correspondente deve ser apagado.

Além disso, as seguintes verificações serão feitas:

[Será validado que é possível excluir meu usuário com sucesso]

Ao deletar um usuário com sucesso o resultado retornado deverá ser conforme exibido abaixo, com um status http 204:

Deletar com sucesso

[Será validado que não é possível excluir meu usuário com token inválido]

Se o token for inválido o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

Deletar com token inválido

[Será validado que não é possível excluir meu usuário sem o token]

Se não conter o token o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

Deletar sem token

13 - Sua aplicação deve ter o endpoint GET post/search?q=:searchTerm

Os seguintes pontos serão avaliados:

  • Retorna uma array de BlogPosts que contenham em seu título, ou conteúdo, o termo pesquisado no queryParam da URL. O retorno deve ter o seguinte formato:
[
  {
    "id": 2,
    "title": "Vamos que vamos",
    "content": "Foguete não tem ré",
    "userId": 1,
    "published": "2011-08-01T19:58:00.000Z",
    "updated": "2011-08-01T19:58:51.000Z",
    "user": {
      "id": 1,
      "displayName": "Lewis Hamilton",
      "email": "[email protected]",
      "image": "https://upload.wikimedia.org/wikipedia/commons/1/18/Lewis_Hamilton_2016_Malaysia_2.jpg"
    },
    "categories": [
      {
        "id": 2,
        "name": "Escola"
      }
    ]
  }
]
  • Caso nenhum BlogPost satisfaça a busca, retorne um array vazio.

Além disso, as seguintes verificações serão feitas:

[Será validado que é possível buscar um blogpost pelo title]

Se a buscar for pelo title o resultado retornado deverá ser conforme exibido abaixo, com um status http 200:

blogpost com token inválido

[Será validado que é possível buscar um blogpost pelo content]

Se a buscar for pelo content o resultado retornado deverá ser conforme exibido abaixo, com um status http 200:

blogpost com token inválido

[Será validado que é possível buscar todos os blogpost quando passa a busca vazia']

Se a buscar for vazia o resultado retornado deverá ser conforme exibido abaixo, com um status http 200:

blogpost com token inválido

[Será validado que é possível buscar um blogpost inexistente e retornar array vazio]

Se a buscar um post inexistente o resultado retornado deverá ser conforme exibido abaixo, com um status http 200:

blogpost com token inválido

[Será validado que não é possível buscar um blogpost sem o token]

Se não contém o token o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

blogpost com token inválido

[Será validado que não é possível buscar um blogpost com o token inválido]

Se o token for inválido o resultado retornado deverá ser conforme exibido abaixo, com um status http 401:

blogpost com token inválido

blogs-api's People

Contributors

flpnascto avatar jeanpsv avatar rodrigoaqueiroz 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.