Como melhorar o retorno das suas APIs no Laravel com API Resource do Eloquent \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 09 Horas 

 02 Min 

 05 Seg 

   Tempo restante da oferta: 09 02 05 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Como melhorar o retorno das suas APIs no Laravel com API Resource do Eloquent  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

# Como melhorar o retorno das suas APIs no Laravel com API Resource do Eloquent

 Um dos pontos mais importantes quando estamos trabalhando APIs é o retorno dos dados. Veja como melhorar suas APIs no Laravel usando o API Resouce do Eloquent.

 [ Elton Fonseca ](https://www.treinaweb.com.br/blog/autor/elton-fonseca) 8 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/03/26181326/CAPA-ELTON-MARÇO.png)  

Quando estamos construindo uma [API](https://www.treinaweb.com.br/blog/o-que-e-uma-api/ "API"), alguns pontos são extremamente importantes para que o cliente consiga consumir corretamente as informações. Um desses pontos é o modo como retornamos dados da nossa API.

Em aplicações web existe uma preocupação muito grande com a aparência e usabilidade na hora de mostrar as informações. Quando estamos trabalhando com APIs nossa preocupação não deve ser diretamente ligada a esses detalhes, porém precisamos cuidar de outras características para que os clientes da nossa API consigam utilizá-la de maneira correta. Um desses cuidados deve ser a estrutura que as informações são retornadas.

## Como os dados são transferidos em uma API

Geralmente as APIs são utilizadas para integração entre sistemas diferentes. Esses sistemas podem apresentar arquiteturas completamente distintas, por esse motivo os dados são transferidos para um formato intermediário conhecido tanto pela API quanto pelo cliente. Os formatos mais utilizados são [JSON](https://www.treinaweb.com.br/blog/o-que-e-json/ "JSON"), [XML](https://www.treinaweb.com.br/blog/o-que-e-xml/ "XML") e [YAML](https://www.treinaweb.com.br/blog/o-que-e-yaml/ "YAML").

O processo de transformação dos dados para esse formato intermediário normalmente é chamado de serialização. No [Laravel](https://www.treinaweb.com.br/blog/o-que-e-laravel/ "Laravel") temos recursos bem importantes para serialização, aconselho a leitura do artigo onde falamos o que é e como utilizar [serialização JSON no Laravel](https://www.treinaweb.com.br/blog/conhecendo-os-recursos-de-serializacao-json-do-laravel/ "serialização JSON no Laravel"). O grande detalhe é que mesmo com os recursos específicos que a serialização possui ele não permite personalizar totalmente a resposta, nesse ponto entra o API Resource.

[  ![Laravel - Eloquent ORM](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/laravel.svg)   Curso Laravel - Eloquent ORM Conhecer o curso ](https://www.treinaweb.com.br/curso/laravel-eloquent-orm)

## O que é API Resource

O API Resource é uma camada extra que usamos na API para transformar os dados que vamos enviar ao cliente. Ela permite que a estrutura de retorno seja totalmente personalizada, isso nos permite formatar os dados na melhor maneira para entregar ao cliente. Além de garantir o desacoplamento com o model, uma vez que podemos definir a estrutura de forma separada. O conceito da camada de transformação não é exclusividade do Laravel. Inclusive no próprio [PHP](https://www.treinaweb.com.br/blog/o-que-e-php/ "PHP") temos algumas outras bibliotecas que facilitam esse trabalho, uma das mais conhecidas é o Fractal. O API Resource do Laravel facilita bastante a vida quando estamos dentro do [Framework](https://www.treinaweb.com.br/blog/para-que-serve-um-framework/ "Framework"), mas também é possível utilizar qualquer outra biblioteca.

## Resource

O primeiro conceito que precisamos conhecer é o resource. Ele é uma classe que usamos para transformar um único item de um recurso. Falando assim parece um pouco complicado, mas na prática o que ele faz é pegar um item que precisamos converter e transformar para o formato especificado nele. Vamos imaginar que estamos buscando o produto Iphone X no banco de dados e precisamos devolver ele na API com uma formatação específica, é basicamente isso que o Resource faz.

A classe do resource deve possuir um método chamado `toArray`, esse método precisa retornar um array com os dados que deseja que o recurso possua após a conversão. O Laravel injeta automaticamente as propriedades do nosso model no resource, isso nos permite acessá-las através do escopo `this`. Veja o exemplo abaixo:

```php
