{"id":17243,"date":"2022-11-04T12:32:39","date_gmt":"2022-11-04T12:32:39","guid":{"rendered":"https:\/\/soloweb.com.br\/blog\/?p=17243"},"modified":"2023-04-02T12:57:11","modified_gmt":"2023-04-02T12:57:11","slug":"construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1","status":"publish","type":"post","link":"https:\/\/soloweb.com.br\/blog\/2022\/11\/04\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\/","title":{"rendered":"Construindo e consumindo uma API RESTful no Laravel 9 (parte 1)"},"content":{"rendered":"\n<p>Neste tutorial, usaremos a vers\u00e3o mais recente do Laravel, vers\u00e3o 9, para criar uma API de back-end RESTful e disponibilizar seus endpoints. E O front-end ser\u00e1 JavaScript puro que far\u00e1 algumas requisi\u00e7\u00f5es a nossa API.<\/p>\n\n\n\n<p>Para tornar a did\u00e1tica mais atrativa vamos criar uma simples aplica\u00e7\u00e3o de lista de tarefas, o famoso &#8220;TODO&#8221; em ingl\u00eas. Ao final termos uma API com os endpoints para consultar, alterar e incluir tarefas.<\/p>\n\n\n\n<p>O Laravel \u00e9 proeminentemente um framework PHP do lado do servidor. Este tutorial serve como uma introdu\u00e7\u00e3o ao Laravel API. Em um aplicativo Web moderno, o servidor tem um trabalho limitado de gerenciar o back-end por meio de alguns pontos de extremidade de API (Application Programming Interface). O cliente envia solicita\u00e7\u00f5es para esses terminais e o servidor retorna uma resposta. No entanto, o servidor n\u00e3o se preocupa com como o cliente renderiza a visualiza\u00e7\u00e3o, o que se enquadra perfeitamente no princ\u00edpio da Separa\u00e7\u00e3o de Responsabilidade. Essa arquitetura permite que os desenvolvedores construam aplicativos robustos para a web e tamb\u00e9m para diferentes dispositivos.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Antes de come\u00e7ar com o Laravel, certifique-se de ter instalado o PHP e o Composer em sua m\u00e1quina local. Usamos o Composer para gerenciar todas as depend\u00eancias. Ao instalar o Composer em sua m\u00e1quina, certifique-se de escolher a op\u00e7\u00e3o para adicion\u00e1-lo \u00e0 vari\u00e1vel de ambiente path para que o Composer seja acess\u00edvel globalmente.<\/p>\n\n\n\n<p>Vamos criar nosso projeto com o comando a baixo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>composer create-project laravel\/laravel api-laravel-app<\/code><\/pre>\n\n\n\n<p>Apos o projeto criado entre na pasta do projeto e inicie a servidor para testarmos se est\u00e1 tudo ok.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ entrar na pasta do projeto\ncd api-laravel-app\n\n\/\/ startar o servidor\nphp artisan serve<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"549\" height=\"150\" src=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/10\/image-33.png\" alt=\"\" class=\"wp-image-17245\" srcset=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/10\/image-33.png 549w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/10\/image-33-300x82.png 300w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/10\/image-33-150x41.png 150w\" sizes=\"auto, (max-width: 549px) 100vw, 549px\" \/><\/figure>\n\n\n\n<p>Se tudo ocorreu bem iremos obter no navegador algo semelhante \u00e0 tela a baixo.<\/p>\n\n\n\n<p><strong>OBS.:<\/strong> Neste momento voc\u00ea poder\u00e1 obter alguns erros, os mais comuns s\u00e3o: permiss\u00e3o de pastas\/arquivos ou alguma Lib.\/biblioteca necess\u00e1ria do PHP que n\u00e3o foi instalada na vers\u00e3o corrente. Ent\u00e3o basta dar as permiss\u00f5es necess\u00e1rias e instalar as depend\u00eancias que falta que tudo ir\u00e1 ocorrer bem.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"540\" src=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/10\/image-32-1024x540.png\" alt=\"\" class=\"wp-image-17244\" srcset=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/10\/image-32-1024x540.png 1024w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/10\/image-32-300x158.png 300w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/10\/image-32-768x405.png 768w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/10\/image-32-390x205.png 390w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/10\/image-32-150x79.png 150w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/10\/image-32.png 1490w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><em>Para este exemplo estamos usando PHP v8.1 e Laravel v9.37<\/em><\/p>\n\n\n\n<p>Artisan \u00e9 uma ferramenta de linha de comando para quem trabalha com Laravel. O Artisan aceita uma grande lista de comandos que permitem gerar c\u00f3digo para seu aplicativo. Execute <strong><em>php artisan list<\/em><\/strong> para ver todos os comandos de artes\u00e3os dispon\u00edveis.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Configurando o Ambiente<\/strong><\/h2>\n\n\n\n<p>Seu aplicativo ter\u00e1 um arquivo (.env) dentro do diret\u00f3rio raiz. Todas as informa\u00e7\u00f5es de configura\u00e7\u00e3o espec\u00edficas do ambiente s\u00e3o declaradas aqui. Crie um banco de dados para seu aplicativo, caso ainda n\u00e3o o tenha feito, e adicione os detalhes do banco de dados ao arquivo (.env)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DB_CONNECTION=mysql\nDB_HOST=127.0.0.1\nDB_PORT=3306\nDB_DATABASE=tododb\nDB_USERNAME=root\nDB_PASSWORD=<\/code><\/pre>\n\n\n\n<p>Aqui estamos conectando um banco de dados chamado <strong><em>tododb<\/em><\/strong> ao aplicativo. Esse banco de dados est\u00e1 hospedado no MySQL, que est\u00e1 sendo executado localmente (ou seja, <strong>http:\/\/127.0.0.1<\/strong> ) na porta <strong>3306<\/strong>. O nome de usu\u00e1rio do banco de dados \u00e9 root e a senha est\u00e1 vazia. Este \u00e9 o nome de usu\u00e1rio e senha padr\u00e3o para bancos de dados MySQL.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Rotas da nossa aplica\u00e7\u00e3o.<\/strong><\/h2>\n\n\n\n<p>Quando o servidor recebe uma requisi\u00e7\u00e3o HTTP, o Laravel tenta combin\u00e1-la com uma rota registrada dentro de qualquer um dos arquivos de rota. Todos os arquivos de rotas est\u00e3o localizados dentro do diret\u00f3rio de rotas, <strong>routes\/web.php<\/strong> hospeda a rota para a interface da web, enquanto <strong>routes\/api.php<\/strong> hospeda a rota para a API. As rotas registradas em api.php ser\u00e3o prefixadas com \/api(como em localhost:3000\/api). Se voc\u00ea precisar alterar esse comportamento, v\u00e1 para a <strong>RouteServiceProviderclasse<\/strong> em <strong>\/app\/Providers\/RouteServiceProvider.php<\/strong> e fa\u00e7a as altera\u00e7\u00f5es l\u00e1.<\/p>\n\n\n\n<p>Como estamos construindo um aplicativo de listagem de tarefas, aqui est\u00e3o os endpoints para a API e as a\u00e7\u00f5es HTTP associadas a esses endpoints.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>GET \/tarefas\/: Recupera todos as tarefas.<\/li>\n\n\n\n<li>GET \/tarefa\/{id}: Recupera a tarefa que corresponde ao id.<\/li>\n\n\n\n<li>POST \/tarefas: Crie uma nova tarefa e insere no banco de dados.<\/li>\n\n\n\n<li>PUT \/tarefas\/{id}: Atualize uma tarefa existente que corresponda ao id.<\/li>\n\n\n\n<li>DELETE \/tarefas\/{id}: Exclui a tarefa com o dado id.<\/li>\n<\/ul>\n\n\n\n<p><br>Vamos acertar a terminologia. GET, POST, PUT e DELETE s\u00e3o os verbos HTTP (mais conhecidos como m\u00e9todos HTTP) essencialmente necess\u00e1rios para construir um servi\u00e7o RESTful. \/tarefas \u00e9 o URI associado ao recurso de tarefas. Os m\u00e9todos HTTP solicitam que o servidor execute a a\u00e7\u00e3o desejada em um determinado recurso.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>O Model<\/strong><\/h2>\n\n\n\n<p>O recurso de tarefas precisa de um modelo que possa interagir com o banco de dados. Modelo \u00e9 a camada que fica no topo do banco de dados. O Laravel usa o Eloquent ORM para modelar o banco de dados.<\/p>\n\n\n\n<p><em>&#8220;O Eloquent ORM inclu\u00eddo no Laravel fornece uma implementa\u00e7\u00e3o bonita e simples do ActiveRecord para trabalhar com seu banco de dados.&nbsp;Cada tabela de banco de dados tem um &#8220;Modelo&#8221; correspondente que \u00e9 usado para interagir com essa tabela.&nbsp;Os modelos permitem consultar dados em suas tabelas, bem como inserir novos registros na tabela.&nbsp;\u2014&nbsp;<a href=\"https:\/\/laravel.com\/docs\/9.x\/eloquent\" target=\"_blank\" rel=\"noreferrer noopener\">Documentos Laravel<\/a>&#8220;<\/em><\/p>\n\n\n\n<p>E a defini\u00e7\u00e3o do esquema do banco de dados? A migra\u00e7\u00e3o do Laravel cuida disso. O Artisan possui um comando de migra\u00e7\u00e3o que permite definir seu esquema e atualiz\u00e1-lo de forma incremental em um est\u00e1gio posterior. Vamos criar um modelo e uma migra\u00e7\u00e3o para a entidade Tarefa.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ php artisan make:model Tarefa -m<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"664\" height=\"105\" src=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image.png\" alt=\"\" class=\"wp-image-17264\" srcset=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image.png 664w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-300x47.png 300w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-150x24.png 150w\" sizes=\"auto, (max-width: 664px) 100vw, 664px\" \/><\/figure>\n\n\n\n<p>Aqui est\u00e1 o arquivo de migra\u00e7\u00e3o gerado em <strong>database\/migrations\/timestamp_create_tarefas_table.php<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\Schema;\n\nreturn new class extends Migration\n{\n    \/**\n     * Run the migrations.\n     *\n     * @return void\n     *\/\n    public function up()\n    {\n        Schema::create('tarefas', function (Blueprint $table) {\n            $table-&gt;id();\n            $table-&gt;timestamps();\n        });\n    }\n\n    \/**\n     * Reverse the migrations.\n     *\n     * @return void\n     *\/\n    public function down()\n    {\n        Schema::dropIfExists('tarefas');\n    }\n};\n<\/code><\/pre>\n\n\n\n<p>O m\u00e9todo <strong><em>up<\/em><\/strong>  \u00e9 chamado durante a migra\u00e7\u00e3o de novas tabelas e colunas para o banco de dados, enquanto ometodo <strong><em>down<\/em><\/strong>  \u00e9 chamado durante a revers\u00e3o de uma migra\u00e7\u00e3o. Criamos um Schema para uma tabela com tr\u00eas linhas: <em><strong>id<\/strong><\/em>, <em><strong>created_at<\/strong><\/em> e <strong><em>updated_at<\/em><\/strong>. O <strong><em>$table-&gt;timestamps()<\/em><\/strong> m\u00e9todo \u00e9 respons\u00e1vel por manter as colunas <strong><em>created_at<\/em><\/strong> e <strong><em>updated_at<\/em><\/strong> Vamos adicionar mais algumas linhas \u00e0 defini\u00e7\u00e3o do esquema.<\/p>\n\n\n\n<p>Ent\u00e3o vamos deixar nosso m\u00e9todo up assim:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> \npublic function up()\n {\n     Schema::create('tarefas', function (Blueprint $table) {\n         $table-&gt;increments('id');\n         $table-&gt;timestamps();\n         $table-&gt;text('descricao');\n         $table-&gt;boolean('concluido');\n     });\n }<\/code><\/pre>\n\n\n\n<p>Sendo assim, ao final nossa tabela ter\u00e1 os campos: chave identificadora, data de cria\u00e7\u00e3o, data de altera\u00e7\u00e3o, campo de descri\u00e7\u00e3o e um campos de controle se a tarefa est\u00e1 conclu\u00edda ou n\u00e3o.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>O Model Tarefa<\/strong><\/h2>\n\n\n\n<p>Por conven\u00e7\u00e3o, o Laravel assume que o modelo <strong>Tarefa<\/strong> est\u00e1 associado \u00e0 tabela de <strong>tarefas<\/strong> . No entanto, se voc\u00ea precisar associar o modelo a um nome de tabela customizado, poder\u00e1 usar a propriedade <strong>$table<\/strong> para declarar o nome da tabela. O modelo ser\u00e1 ent\u00e3o associado a uma tabela chamada <strong>nome_customizado<\/strong> .<\/p>\n\n\n\n<p>Este c\u00f3digo deve estar em <strong>app\/Models\/Tarefa.php:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n \nnamespace App\\Models;\n \nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Illuminate\\Database\\Eloquent\\Model;\n \nclass Tarefa extends Model\n{\n    use HasFactory;\n     \n    \/\/ caso queira mudar o nome padr\u00e3o da tabela:\n    protected $table = 'tarefa_lista';\n}<\/code><\/pre>\n\n\n\n<p>Mas vamos manter as coisas simples e seguir a conven\u00e7\u00e3o.&nbsp;O modelo de Tarefa gerado est\u00e1 localizado dentro do diret\u00f3rio&nbsp;<strong>app\/<\/strong>.&nbsp;Embora a classe de modelo possa parecer vazia, ela vem equipada com v\u00e1rios m\u00e9todos de cria\u00e7\u00e3o de consultas que voc\u00ea pode usar para consultar o banco de dados.&nbsp;Por exemplo, voc\u00ea pode usar&nbsp;<code><strong><em>Tarefa::all()<\/em><\/strong><\/code> para recuperar todos as tarefas ou&nbsp;<code><strong><em>Tarefa::find(1)<\/em><\/strong><\/code> para recuperar uma determinada tarefa com <strong><em>id 1<\/em><\/strong>.<\/p>\n\n\n\n<p>Os modelos Laravel possuem um mecanismo de prote\u00e7\u00e3o embutido contra&nbsp;vulnerabilidade de atribui\u00e7\u00e3o em massa&nbsp;.&nbsp;A&nbsp;<code>fillable<\/code> propriedade \u00e9 usada para declarar os nomes de atributos que podem ser atribu\u00eddos em massa com seguran\u00e7a.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/* Adicionar o fillable property em nosso Tarefa Model *\/\n \nprotected $fillable = &#91;'descricao', 'concluido'];<\/code><\/pre>\n\n\n\n<p>O c\u00f3digo acima lista os atributos <strong>descricao e concluido<\/strong> e os trata como atribu\u00edveis em <strong>massa.priceavailability<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass Tarefa extends Model\n{\n    use HasFactory;\n    \n    protected $fillable = &#91;'descricao', 'concluido'];\n}<\/code><\/pre>\n\n\n\n<p>Por fim, execute o comando a seguir para executar as migra\u00e7\u00f5es pendentes.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php artisan migrate<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1007\" height=\"111\" src=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-1.png\" alt=\"\" class=\"wp-image-17265\" srcset=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-1.png 1007w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-1-300x33.png 300w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-1-768x85.png 768w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-1-150x17.png 150w\" sizes=\"auto, (max-width: 1007px) 100vw, 1007px\" \/><\/figure>\n\n\n\n<p>Este comando criar\u00e1 as tabelas padr\u00e3o (por exemplo, usu\u00e1rios, migra\u00e7\u00f5es) e a tabela que voc\u00ea definiu (tarefas) dentro do banco de dados tododb que definimos anteriormente como o banco de dados do aplicativo no arquivo (.env) .<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"208\" src=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-2-1024x208.png\" alt=\"\" class=\"wp-image-17267\" srcset=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-2-1024x208.png 1024w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-2-300x61.png 300w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-2-768x156.png 768w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-2-150x30.png 150w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-2.png 1118w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Defini\u00e7\u00e3o da tabela <strong><em>tarefas<\/em><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"926\" height=\"269\" src=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-3.png\" alt=\"\" class=\"wp-image-17268\" srcset=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-3.png 926w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-3-300x87.png 300w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-3-768x223.png 768w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-3-150x44.png 150w\" sizes=\"auto, (max-width: 926px) 100vw, 926px\" \/><\/figure>\n\n\n\n<p>Agora podemos usar o m\u00e9todo <strong><em>Tarefa::create<\/em><\/strong> para inserir novas linhas na tabela de <strong><em>tarefas<\/em><\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Populando a tabela tarefas &#8211; Database Seeding<\/strong><\/h2>\n\n\n\n<p>O Laravel permite preencher seu banco de dados de desenvolvimento e produ\u00e7\u00e3o com dados fict\u00edcios que voc\u00ea pode usar para testar seus endpoints de API. Voc\u00ea pode criar uma classe seed executando o seguinte comando Artisan.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ php artisan make:seeder TarefasTableSeeder<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"754\" height=\"68\" src=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-4.png\" alt=\"\" class=\"wp-image-17269\" srcset=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-4.png 754w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-4-300x27.png 300w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-4-150x14.png 150w\" sizes=\"auto, (max-width: 754px) 100vw, 754px\" \/><\/figure>\n\n\n\n<p>Os arquivos semeadores gerados ser\u00e3o colocados no diret\u00f3rio database\/seeders .<\/p>\n\n\n\n<p>Para gerar os dados fict\u00edcios, voc\u00ea pode usar algo assim str_random(10) que retorna uma string aleat\u00f3ria. Mas se voc\u00ea precisar de dados pr\u00f3ximos o suficiente dos dados reais, use algo como a biblioteca faker. Faker \u00e9 uma biblioteca de terceiros que \u00e9 fornecida com o framework Laravel para gerar dados falsos.<\/p>\n\n\n\n<p>Aqui est\u00e1 uma classe semeadora para gerar dados de semente. Deve ir em <strong><em>database\/seeders\/TarefasTableSeeder.php<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nnamespace Database\\Seeders;\n\nuse App\\Models\\Tarefa;\nuse Illuminate\\Database\\Seeder;\n\nclass TarefasTableSeeder extends Seeder\n{\n    \/**\n     * Run the database seeds.\n     *\n     * @return void\n     *\/\n    public function run()\n    {\n        $faker = \\Faker\\Factory::create();\n \n        \/\/ criar 50 registros de tarefas\n        for ($i = 0; $i &lt; 50; $i++) {\n            Tarefa::create(&#91;                \n                'descricao' =&gt; $faker-&gt;paragraph,\n                'concluido' =&gt; $faker-&gt;boolean(50)\n            ]);\n        }\n    }\n}\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>$ php artisan db:seed --class=TarefassTableSeeder<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"780\" height=\"63\" src=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-5.png\" alt=\"\" class=\"wp-image-17270\" srcset=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-5.png 780w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-5-300x24.png 300w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-5-768x62.png 768w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-5-150x12.png 150w\" sizes=\"auto, (max-width: 780px) 100vw, 780px\" \/><\/figure>\n\n\n\n<p>Aqui est\u00e1 o resultado:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"673\" src=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-6.png\" alt=\"\" class=\"wp-image-17271\" srcset=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-6.png 958w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-6-300x211.png 300w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-6-768x540.png 768w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-6-130x90.png 130w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/image-6-150x105.png 150w\" sizes=\"auto, (max-width: 958px) 100vw, 958px\" \/><\/figure>\n\n\n\n<p>Com nosso Model ok e com nossa tabela populada com exemplos ficticios j\u00e1 poderiamos fazer testes com com nossa&nbsp;<strong>routes\/api.php<\/strong>&nbsp;maas antes vamos criar nosso controller. Mas esta vai ficar para a parte 02 para este post n\u00e3o ficar muito extenso.<\/p>\n\n\n\n<p>No pr\u00f3ximo post vamos finalizar nossa dica com o controller, rota e utiliza\u00e7\u00e3o da API, continua&#8230;<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste tutorial, usaremos a vers\u00e3o mais recente do Laravel, vers\u00e3o 9, para criar uma API de back-end RESTful e disponibilizar<\/p>\n","protected":false},"author":4,"featured_media":17296,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","footnotes":""},"categories":[227,302,240,132],"tags":[269,224,139,70,323],"class_list":["post-17243","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desempenho","category-destaque-principal","category-javascript","category-php","tag-api","tag-javascript","tag-laravel","tag-php","tag-restful"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Construindo e consumindo uma API RESTful no Laravel 9 (parte 1) - SOLOWEB Tecnologia<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/soloweb.com.br\/blog\/2022\/11\/04\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Construindo e consumindo uma API RESTful no Laravel 9 (parte 1) - SOLOWEB Tecnologia\" \/>\n<meta property=\"og:description\" content=\"Neste tutorial, usaremos a vers\u00e3o mais recente do Laravel, vers\u00e3o 9, para criar uma API de back-end RESTful e disponibilizar\" \/>\n<meta property=\"og:url\" content=\"https:\/\/soloweb.com.br\/blog\/2022\/11\/04\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\/\" \/>\n<meta property=\"og:site_name\" content=\"SOLOWEB Tecnologia\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-04T12:32:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-04-02T12:57:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/WhatsApp-Image-2022-11-04-at-09.29.41.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"940\" \/>\n\t<meta property=\"og:image:height\" content=\"787\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Carlos Rolim\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlos Rolim\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/11\\\/04\\\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/11\\\/04\\\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\\\/\"},\"author\":{\"name\":\"Carlos Rolim\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/b10ff5bc260b411c2d82b19fad8ae3f1\"},\"headline\":\"Construindo e consumindo uma API RESTful no Laravel 9 (parte 1)\",\"datePublished\":\"2022-11-04T12:32:39+00:00\",\"dateModified\":\"2023-04-02T12:57:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/11\\\/04\\\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\\\/\"},\"wordCount\":1504,\"publisher\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/11\\\/04\\\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/WhatsApp-Image-2022-11-04-at-09.29.41.jpeg\",\"keywords\":[\"api\",\"javascript\",\"laravel\",\"PHP\",\"restful\"],\"articleSection\":[\"Desempenho\",\"Destaque Principal\",\"JavaScript\",\"PHP\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/11\\\/04\\\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\\\/\",\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/11\\\/04\\\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\\\/\",\"name\":\"Construindo e consumindo uma API RESTful no Laravel 9 (parte 1) - SOLOWEB Tecnologia\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/11\\\/04\\\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/11\\\/04\\\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/WhatsApp-Image-2022-11-04-at-09.29.41.jpeg\",\"datePublished\":\"2022-11-04T12:32:39+00:00\",\"dateModified\":\"2023-04-02T12:57:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/11\\\/04\\\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/11\\\/04\\\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/11\\\/04\\\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\\\/#primaryimage\",\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/WhatsApp-Image-2022-11-04-at-09.29.41.jpeg\",\"contentUrl\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/WhatsApp-Image-2022-11-04-at-09.29.41.jpeg\",\"width\":940,\"height\":787},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2022\\\/11\\\/04\\\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Construindo e consumindo uma API RESTful no Laravel 9 (parte 1)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/\",\"name\":\"SOLOWEB Tecnologia\",\"description\":\"SOLOWEB Tecnologia\",\"publisher\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#organization\",\"name\":\"SOLOWEB Tecnologia\",\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/cropped-solo.png\",\"contentUrl\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/cropped-solo.png\",\"width\":341,\"height\":94,\"caption\":\"SOLOWEB Tecnologia\"},\"image\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/b10ff5bc260b411c2d82b19fad8ae3f1\",\"name\":\"Carlos Rolim\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/avatar_user_4_1674993909-96x96.png\",\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/avatar_user_4_1674993909-96x96.png\",\"contentUrl\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/avatar_user_4_1674993909-96x96.png\",\"caption\":\"Carlos Rolim\"},\"sameAs\":[\"http:\\\/\\\/carlosrolim.com\"],\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/author\\\/carlos\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Construindo e consumindo uma API RESTful no Laravel 9 (parte 1) - SOLOWEB Tecnologia","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/soloweb.com.br\/blog\/2022\/11\/04\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\/","og_locale":"pt_BR","og_type":"article","og_title":"Construindo e consumindo uma API RESTful no Laravel 9 (parte 1) - SOLOWEB Tecnologia","og_description":"Neste tutorial, usaremos a vers\u00e3o mais recente do Laravel, vers\u00e3o 9, para criar uma API de back-end RESTful e disponibilizar","og_url":"https:\/\/soloweb.com.br\/blog\/2022\/11\/04\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\/","og_site_name":"SOLOWEB Tecnologia","article_published_time":"2022-11-04T12:32:39+00:00","article_modified_time":"2023-04-02T12:57:11+00:00","og_image":[{"width":940,"height":787,"url":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/WhatsApp-Image-2022-11-04-at-09.29.41.jpeg","type":"image\/jpeg"}],"author":"Carlos Rolim","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Carlos Rolim","Est. tempo de leitura":"11 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/soloweb.com.br\/blog\/2022\/11\/04\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\/#article","isPartOf":{"@id":"https:\/\/soloweb.com.br\/blog\/2022\/11\/04\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\/"},"author":{"name":"Carlos Rolim","@id":"https:\/\/soloweb.com.br\/blog\/#\/schema\/person\/b10ff5bc260b411c2d82b19fad8ae3f1"},"headline":"Construindo e consumindo uma API RESTful no Laravel 9 (parte 1)","datePublished":"2022-11-04T12:32:39+00:00","dateModified":"2023-04-02T12:57:11+00:00","mainEntityOfPage":{"@id":"https:\/\/soloweb.com.br\/blog\/2022\/11\/04\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\/"},"wordCount":1504,"publisher":{"@id":"https:\/\/soloweb.com.br\/blog\/#organization"},"image":{"@id":"https:\/\/soloweb.com.br\/blog\/2022\/11\/04\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\/#primaryimage"},"thumbnailUrl":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/WhatsApp-Image-2022-11-04-at-09.29.41.jpeg","keywords":["api","javascript","laravel","PHP","restful"],"articleSection":["Desempenho","Destaque Principal","JavaScript","PHP"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/soloweb.com.br\/blog\/2022\/11\/04\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\/","url":"https:\/\/soloweb.com.br\/blog\/2022\/11\/04\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\/","name":"Construindo e consumindo uma API RESTful no Laravel 9 (parte 1) - SOLOWEB Tecnologia","isPartOf":{"@id":"https:\/\/soloweb.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/soloweb.com.br\/blog\/2022\/11\/04\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\/#primaryimage"},"image":{"@id":"https:\/\/soloweb.com.br\/blog\/2022\/11\/04\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\/#primaryimage"},"thumbnailUrl":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/WhatsApp-Image-2022-11-04-at-09.29.41.jpeg","datePublished":"2022-11-04T12:32:39+00:00","dateModified":"2023-04-02T12:57:11+00:00","breadcrumb":{"@id":"https:\/\/soloweb.com.br\/blog\/2022\/11\/04\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/soloweb.com.br\/blog\/2022\/11\/04\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/soloweb.com.br\/blog\/2022\/11\/04\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\/#primaryimage","url":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/WhatsApp-Image-2022-11-04-at-09.29.41.jpeg","contentUrl":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/11\/WhatsApp-Image-2022-11-04-at-09.29.41.jpeg","width":940,"height":787},{"@type":"BreadcrumbList","@id":"https:\/\/soloweb.com.br\/blog\/2022\/11\/04\/construindo-e-consumindo-uma-api-restful-no-laravel-9-parte-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/soloweb.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Construindo e consumindo uma API RESTful no Laravel 9 (parte 1)"}]},{"@type":"WebSite","@id":"https:\/\/soloweb.com.br\/blog\/#website","url":"https:\/\/soloweb.com.br\/blog\/","name":"SOLOWEB Tecnologia","description":"SOLOWEB Tecnologia","publisher":{"@id":"https:\/\/soloweb.com.br\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/soloweb.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/soloweb.com.br\/blog\/#organization","name":"SOLOWEB Tecnologia","url":"https:\/\/soloweb.com.br\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/soloweb.com.br\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/04\/cropped-solo.png","contentUrl":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/04\/cropped-solo.png","width":341,"height":94,"caption":"SOLOWEB Tecnologia"},"image":{"@id":"https:\/\/soloweb.com.br\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/soloweb.com.br\/blog\/#\/schema\/person\/b10ff5bc260b411c2d82b19fad8ae3f1","name":"Carlos Rolim","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/01\/avatar_user_4_1674993909-96x96.png","url":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/01\/avatar_user_4_1674993909-96x96.png","contentUrl":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/01\/avatar_user_4_1674993909-96x96.png","caption":"Carlos Rolim"},"sameAs":["http:\/\/carlosrolim.com"],"url":"https:\/\/soloweb.com.br\/blog\/author\/carlos\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/17243","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/comments?post=17243"}],"version-history":[{"count":17,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/17243\/revisions"}],"predecessor-version":[{"id":17825,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/17243\/revisions\/17825"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/media\/17296"}],"wp:attachment":[{"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/media?parent=17243"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/categories?post=17243"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/tags?post=17243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}