Data response personalizada Strapi
Neste guia, veremos como você pode personalizar a response da sua API.
Introdução
Para poder atualizar o data response padrão, primeiro você precisa entender como ele funciona.
Quando você cria um tipo de conteúdo, ele gera uma API com os seguintes endpoits
Cada um desses endpoints dispara uma ação do controlador. Aqui está a lista de ações do controlador que existem por padrão quando um tipo de conteúdo é criado.
Se você verificar o arquivo do controlador da API gerada
./api/{content-type}/controller/{Content-Type}.js , verá um arquivo vazio. Isso ocorre porque toda a lógica padrão é gerenciada pelo Strapi. Mas você pode substituir essas ações por seu próprio código.
E é isso que faremos para gerenciar nossa data response personalizada.
Exemplo
No nosso exemplo, usaremos um tipo de restaurante com um chef. Por padrão, quando você busca restaurantes, você obtém todas as informações do chef. Vamos considerar que você não deseja expor o
email do chef por motivos de
privacidade.
Para aplicar essa regra, personalizaremos a ação que busca todos os restaurantes e removeremos o email dos dados retornados.
Para seguir o exemplo, você precisará criar um restaurante tipo de conteúdo e adicionar a seguinte definição de campo:
atributo string chamado name
atributo text chamado descrição
atributo relação Restaurante (chef) - O usuário tem muitos restaurantes - Usuários (restaurantes)
Em seguida, adicione alguns dados.
Substituir ação do controlador
Para personalizar a função que busca todos os nossos restaurantes, precisamos substituir a função de localização.
Primeiro, para ver a diferença, vamos solicitar GET /restaurants. Você verá todos os dados que você criou. Agora vamos começar a personalização.
Atalho - ./api/restaurant/controller/Restaurant.js
Depois de salvar a nova função, vamos reiniciar a solicitação GET /restaurants. Veremos strapi como resposta.
Retorne os dados
Agora sabemos a função que precisamos atualizar, mas queremos apenas personalizar os valores retornados do restaurante.
Na documentação do controlador, você encontrará a implementação padrão de todas as ações. Isso o ajudará a sobrescrever a
lógica de busca.
Atalho - ./api/restaurant/controller/Restaurant.js
E agora os dados estão de volta em GET /restaurants
Aplique nossas alterações
Podemos ver que a função find retorna o resultado do
mapa. E a função de map apenas limpa todas as entradas.
Portanto, em vez de retornar a entrada limpa, também removeremos o email do chef de cada restaurante.
Atalho - ./api/restaurant/controller/Restaurant.js
E tada! O email desapareceu.
*DICA
Este guia pode ser aplicado a qualquer outra ação do controlador.