{"id":5887,"date":"2026-04-10T13:22:17","date_gmt":"2026-04-10T16:22:17","guid":{"rendered":"https:\/\/thiagorossi.com.br\/blog\/?p=5887"},"modified":"2026-04-10T13:23:45","modified_gmt":"2026-04-10T16:23:45","slug":"request-e-response-no-cakephp","status":"publish","type":"post","link":"https:\/\/thiagorossi.com.br\/blog\/request-e-response-no-cakephp\/","title":{"rendered":"Request e Response no CakePHP"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de leitura: <\/span> <span class=\"rt-time\"> 5<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span>\n<p class=\"has-medium-font-size wp-block-paragraph\">Request e Response no CakePHP: Chegamos a um dos artigos mais t\u00e9cnicos e, ao mesmo tempo, mais libertadores da nossa s\u00e9rie. At\u00e9 aqui, voc\u00ea aprendeu a modelar dados, criar interfaces e organizar a l\u00f3gica. Mas como o <strong>CakePHP<\/strong> conversa com o mundo exterior? Como ele entende o que o navegador enviou e como ele prepara a resposta perfeita, seja ela um HTML, um JSON ou um download de arquivo?<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Como especialista em desenvolvimento web, preparei este d\u00e9cimo sexto artigo para explorarmos o ciclo de vida da requisi\u00e7\u00e3o. Vamos dominar os objetos <strong>Request<\/strong> e <strong>Response<\/strong>, as ferramentas que permitem que voc\u00ea manipule dados de entrada e cabe\u00e7alhos como um verdadeiro arquiteto de software.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">Request &amp; Response: Manipulando dados de entrada e cabe\u00e7alhos no CakePHP<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Request e Response no CakePHP: No cora\u00e7\u00e3o de qualquer aplica\u00e7\u00e3o web existe um ciclo simples: o cliente (navegador) envia uma <strong>Requisi\u00e7\u00e3o (Request)<\/strong> e o servidor devolve uma <strong>Resposta (Response)<\/strong>. No CakePHP, esse ciclo \u00e9 gerenciado por objetos robustos que abstraem a complexidade das vari\u00e1veis globais do PHP (como <code>$_POST<\/code>, <code>$_GET<\/code> e <code>$_SERVER<\/code>), oferecendo uma interface fluida, segura e test\u00e1vel.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Entender como manipular esses objetos \u00e9 essencial para criar APIs, gerenciar seguran\u00e7a, controlar cache e oferecer uma experi\u00eancia de usu\u00e1rio personalizada no seu blog ou sistema SaaS.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">1. O Objeto ServerRequest: O que o seu App recebe<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Sempre que uma Action do seu Controller \u00e9 chamada, o CakePHP injeta nela um objeto chamado <code>ServerRequest<\/code>, acess\u00edvel atrav\u00e9s de <code>$this-&gt;request<\/code>. Este objeto cont\u00e9m tudo o que voc\u00ea precisa saber sobre a intera\u00e7\u00e3o do usu\u00e1rio.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Acessando Dados de Formul\u00e1rios e Query Strings<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Antigamente, us\u00e1vamos <code>$_POST['nome']<\/code>. No CakePHP, fazemos de forma muito mais segura:<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>\/\/ Pega um dado espec\u00edfico do POST\n$nome = $this-&gt;request-&gt;getData('nome');\n\n\/\/ Pega um dado da URL (Query String: ?page=2)\n$pagina = $this-&gt;request-&gt;getQuery('page');\n\n\/\/ Pega par\u00e2metros passados pela rota (ex: \/artigos\/view\/10)\n$id = $this-&gt;request-&gt;getParam('id');\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Identificando o Tipo de Requisi\u00e7\u00e3o<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Isso \u00e9 vital para a seguran\u00e7a. Voc\u00ea n\u00e3o quer que um rob\u00f4 delete um artigo via <code>GET<\/code>. O objeto Request facilita essa verifica\u00e7\u00e3o:<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>if ($this-&gt;request-&gt;is('post')) {\n    \/\/ Processa o salvamento\n}\n\nif ($this-&gt;request-&gt;is('ajax')) {\n    \/\/ Retorna apenas um fragmento de HTML ou JSON\n}\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">2. Manipulando o Ambiente e Cabe\u00e7alhos de Entrada<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">\u00c0s vezes, voc\u00ea precisa de informa\u00e7\u00f5es mais profundas, como o endere\u00e7o IP do usu\u00e1rio (lembra do nosso Componente de Geolocaliza\u00e7\u00e3o no artigo 13?) ou os cabe\u00e7alhos enviados pelo navegador.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>\/\/ Pega o IP do cliente\n$ip = $this-&gt;request-&gt;clientIp();\n\n\/\/ Verifica o \"User Agent\" (Navegador\/Dispositivo)\n$agente = $this-&gt;request-&gt;header('User-Agent');\n\n\/\/ Verifica se a conex\u00e3o \u00e9 segura (HTTPS)\n$isSecure = $this-&gt;request-&gt;is('ssl');\n<\/code><\/pre>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Esses dados permitem que voc\u00ea tome decis\u00f5es em tempo real, como redirecionar usu\u00e1rios de dispositivos m\u00f3veis ou bloquear acessos de IPs suspeitos.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">3. O Objeto Response: Moldando a Sa\u00edda<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Se o <code>Request<\/code> \u00e9 o que entra, o <code>Response<\/code> \u00e9 o que sai. Acess\u00edvel via <code>$this-&gt;response<\/code>, ele permite que voc\u00ea controle exatamente o que o navegador receber\u00e1. Por padr\u00e3o, o CakePHP configura isso para renderizar um HTML, mas voc\u00ea pode mudar tudo.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Alterando o Tipo de Conte\u00fado (Content-Type)<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Imagine que voc\u00ea quer gerar um arquivo CSV com a lista de candidatos que se cadastraram para uma vaga de trabalho em um sistema de empregos:<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>public function exportarCsv()\n{\n    $dados = \"Nome;Email\\nThiago;thiago@exemplo.com\";\n    \n    return $this-&gt;response\n        -&gt;withType('csv')\n        -&gt;withStringBody($dados);\n}\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Controlando o Status HTTP<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Saber enviar o c\u00f3digo de status correto \u00e9 fundamental para o SEO e para a comunica\u00e7\u00e3o com APIs.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>200:<\/strong> OK (Padr\u00e3o)<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>201:<\/strong> Created (Sucesso ao salvar novo registro)<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>403:<\/strong> Forbidden (Acesso negado)<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>404:<\/strong> Not Found (N\u00e3o encontrado)<\/li>\n<\/ul>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>return $this-&gt;response-&gt;withStatus(403);\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">4. Manipulando Cabe\u00e7alhos e Cache<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">O desempenho de um blog com centenas ou milhares de artigos depende muito de como voc\u00ea gerencia o cache no navegador do usu\u00e1rio. Voc\u00ea pode usar o objeto Response para enviar cabe\u00e7alhos de expira\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>\/\/ For\u00e7a o navegador a baixar o conte\u00fado como um arquivo chamado 'relatorio.pdf'\nreturn $this-&gt;response\n    -&gt;withDownload('relatorio.pdf')\n    -&gt;withHeader('X-Custom-Header', 'ValorCustomizado');\n\n\/\/ Configura o cache do navegador por 1 hora\nreturn $this-&gt;response-&gt;withCache('-1 minute', '+1 hour');\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">5. Cookie e Session: Persistindo a Comunica\u00e7\u00e3o<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Embora o protocolo HTTP seja &#8220;stateless&#8221; (sem mem\u00f3ria), o CakePHP utiliza os objetos Request e Response para gerenciar <strong>Cookies<\/strong> e <strong>Sessions<\/strong> de forma integrada.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Session:<\/strong> Dados tempor\u00e1rios no servidor (ex: &#8220;Usu\u00e1rio Logado&#8221;).<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><code>$this->request->getSession()->write('Config.tema', 'dark');<\/code><\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Cookies:<\/strong> Dados guardados no navegador do cliente. O CakePHP 5 utiliza uma abordagem moderna para cookies atrav\u00e9s da <code>CookieCollection<\/code>.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">6. O Fluxo de Redirecionamento<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">O redirecionamento \u00e9 uma resposta especial. Quando voc\u00ea usa <code>$this-&gt;redirect()<\/code>, o CakePHP est\u00e1, na verdade, configurando um objeto Response com o status <strong>302<\/strong> (ou <strong>301<\/strong>) e o cabe\u00e7alho <code>Location<\/code>.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>return $this-&gt;redirect(&#91;'controller' =&gt; 'Artigos', 'action' =&gt; 'index']);\n<\/code><\/pre>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Importante:<\/strong> Sempre use o <code>return<\/code> ao chamar o redirecionamento para garantir que o ciclo da requisi\u00e7\u00e3o seja encerrado imediatamente.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">7. Boas Pr\u00e1ticas na Manipula\u00e7\u00e3o de Request &amp; Response<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Para manter seu projeto com arquitetura de elite, siga estas regras:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Imutabilidade:<\/strong> No CakePHP moderno, os objetos Request e Response s\u00e3o imut\u00e1veis. Isso significa que m\u00e9todos como <code>withStatus()<\/code> ou <code>withHeader()<\/code> n\u00e3o alteram o objeto atual, mas retornam uma <strong>nova inst\u00e2ncia<\/strong>. Por isso, voc\u00ea deve sempre usar o <code>return<\/code> ou reatribuir a vari\u00e1vel.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>N\u00e3o use vari\u00e1veis globais:<\/strong> Evite <code>$_POST<\/code> ou <code>$_GET<\/code>. Elas tornam seu c\u00f3digo dif\u00edcil de testar e vulner\u00e1vel. O objeto <code>Request<\/code> limpa e organiza esses dados para voc\u00ea.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>RequestHandler:<\/strong> Sempre carregue o componente <code>RequestHandler<\/code> se estiver trabalhando com m\u00faltiplas extens\u00f5es (JSON, XML). Ele automatiza muita coisa no objeto Response.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Seguran\u00e7a de Cabe\u00e7alhos:<\/strong> Use o Response para configurar cabe\u00e7alhos de seguran\u00e7a como <code>X-Frame-Options<\/code> para evitar ataques de <em>Clickjacking<\/em>.<\/li>\n<\/ol>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">Conclus\u00e3o: O Dom\u00ednio da Comunica\u00e7\u00e3o Web<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Entender a fundo o funcionamento de <strong>Request &amp; Response<\/strong> \u00e9 o que diferencia um desenvolvedor que &#8220;faz sites&#8221; de um que &#8220;constr\u00f3i aplica\u00e7\u00f5es&#8221;. Ao dominar esses objetos, voc\u00ea ganha controle total sobre a entrada de dados (garantindo seguran\u00e7a e precis\u00e3o) e sobre a sa\u00edda (otimizando performance e compatibilidade).<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Seja para criar uma API RESTful para o seu pr\u00f3ximo SaaS ou para garantir que as URLs do seu blog respondam com os cabe\u00e7alhos de cache corretos, o dom\u00ednio desses objetos \u00e9 sua ferramenta mais poderosa. Voc\u00ea agora n\u00e3o apenas envia HTML; voc\u00ea governa o protocolo HTTP dentro da sua aplica\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Mas antes de dominar o CakePHP, se for o seu caso, toda jornada tem um in\u00edcio. Vamos entender quais s\u00e3o os conhecimentos b\u00e1sicos necess\u00e1rios para aproveitar ao m\u00e1ximo este poderoso framework. Para iniciar seus estudos no CakePHP, voc\u00ea precisar\u00e1 dominar as seguintes tecnologias:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/html\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html.webp\" alt=\"HTML\" class=\"wp-image-600\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">HTML<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/css\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/Capa-Artigos-Linux.webp\" alt=\"CSS\" class=\"wp-image-702\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/Capa-Artigos-Linux.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/Capa-Artigos-Linux-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">CSS<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/javascript\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/javascript.webp\" alt=\"Javascript\" class=\"wp-image-804\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/javascript.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/javascript-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">JavaScript<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/sql\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2.webp\" alt=\"SQL\" class=\"wp-image-942\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">SQL<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/php\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png\" alt=\"Capa Curso PHP\" class=\"wp-image-2835\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP-300x169.png 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">PHP<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">E se voc\u00ea gosta do nosso conte\u00fado, n\u00e3o deixe de contribuir adquirindo os servi\u00e7os e produtos dos nossos apoiadores e empresas que somos associados.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/hostinger.com.br\/?REFERRALCODE=1THIAGO62\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/03\/hostinger.png\" alt=\"Hospedagem Hostinger\" class=\"wp-image-92\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/amzn.to\/3SNDYlc\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/08\/ofertas-amazon.webp\" alt=\"Ofertas Amazon\" class=\"wp-image-1308\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/amzn.to\/3SNKmt0\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/08\/amazonprime.webp\" alt=\"Amazon Prime\" class=\"wp-image-1307\"\/><\/a><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Dica de Especialista:<\/strong> Explore o m\u00e9todo <code>$this->request->is(['get', 'ajax'])<\/code>. Voc\u00ea pode passar um array para verificar m\u00faltiplas condi\u00e7\u00f5es de uma vez. Isso \u00e9 extremamente \u00fatil em Controllers que servem tanto para navega\u00e7\u00e3o comum quanto para carregamentos din\u00e2micos via JavaScript!<\/p>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de leitura: <\/span> <span class=\"rt-time\"> 5<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span>Request e Response no CakePHP: Chegamos a um dos artigos mais t\u00e9cnicos e, ao mesmo&#8230;<\/p>\n","protected":false},"author":1,"featured_media":5819,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[97],"tags":[],"class_list":["post-5887","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cakephp","wpcat-97-id"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Request e Response no CakePHP - BLOG THIAGO ROSSI<\/title>\n<meta name=\"description\" content=\"Request e Response no CakePHP: No cora\u00e7\u00e3o de qualquer aplica\u00e7\u00e3o web existe um ciclo simples: o cliente (navegador) envia uma Requisi\u00e7\u00e3o ...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thiagorossi.com.br\/blog\/request-e-response-no-cakephp\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Request e Response no CakePHP - BLOG THIAGO ROSSI\" \/>\n<meta property=\"og:description\" content=\"Request e Response no CakePHP: No cora\u00e7\u00e3o de qualquer aplica\u00e7\u00e3o web existe um ciclo simples: o cliente (navegador) envia uma Requisi\u00e7\u00e3o ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thiagorossi.com.br\/blog\/request-e-response-no-cakephp\/\" \/>\n<meta property=\"og:site_name\" content=\"BLOG THIAGO ROSSI\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-10T16:22:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-10T16:23:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png\" \/>\n\t<meta property=\"og:image:width\" content=\"758\" \/>\n\t<meta property=\"og:image:height\" content=\"426\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Thiago Rossi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thiago Rossi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/request-e-response-no-cakephp\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/request-e-response-no-cakephp\\\/\"},\"author\":{\"name\":\"Thiago Rossi\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/5f28286948ec2afdeb2e044a2196cd87\"},\"headline\":\"Request e Response no CakePHP\",\"datePublished\":\"2026-04-10T16:22:17+00:00\",\"dateModified\":\"2026-04-10T16:23:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/request-e-response-no-cakephp\\\/\"},\"wordCount\":1035,\"publisher\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/request-e-response-no-cakephp\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/capa-cakephp.png\",\"articleSection\":[\"CakePHP\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/request-e-response-no-cakephp\\\/\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/request-e-response-no-cakephp\\\/\",\"name\":\"Request e Response no CakePHP - BLOG THIAGO ROSSI\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/request-e-response-no-cakephp\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/request-e-response-no-cakephp\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/capa-cakephp.png\",\"datePublished\":\"2026-04-10T16:22:17+00:00\",\"dateModified\":\"2026-04-10T16:23:45+00:00\",\"description\":\"Request e Response no CakePHP: No cora\u00e7\u00e3o de qualquer aplica\u00e7\u00e3o web existe um ciclo simples: o cliente (navegador) envia uma Requisi\u00e7\u00e3o ...\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/request-e-response-no-cakephp\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/request-e-response-no-cakephp\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/request-e-response-no-cakephp\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/capa-cakephp.png\",\"contentUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/capa-cakephp.png\",\"width\":758,\"height\":426,\"caption\":\"CakePHP\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/request-e-response-no-cakephp\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Request e Response no CakePHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\",\"name\":\"THIAGO ROSSI\",\"description\":\"Mais de 20 anos de experi\u00eancia no mercado de TI!\",\"publisher\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\"},\"alternateName\":\"TR | CURSO WEB DEV\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\",\"name\":\"THIAGO ROSSI\",\"alternateName\":\"TR | CURSO WEB DEV\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/new-logo.webp\",\"contentUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/new-logo.webp\",\"width\":300,\"height\":300,\"caption\":\"THIAGO ROSSI\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/linkedin.com\\\/in\\\/thiagox86\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/5f28286948ec2afdeb2e044a2196cd87\",\"name\":\"Thiago Rossi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"caption\":\"Thiago Rossi\"},\"description\":\"Com mais de 20 anos de jornada na tecnologia, minha trajet\u00f3ria evoluiu do ensino t\u00e9cnico \u00e0 arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de solu\u00e7\u00f5es de Intelig\u00eancia Artificial nativa e an\u00e1lise de dados p\u00fablicos, utilizando o ecossistema PHP para transformar dados brutos em transpar\u00eancia e efici\u00eancia. Como autor e desenvolvedor, acredito na democratiza\u00e7\u00e3o do conhecimento. Essa vis\u00e3o resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura at\u00e9 os bastidores da ind\u00fastria de Jogos e IA. No universo de Game Design, sou autor do livro \\\"GDD \u2013 O Guia Definitivo\\\" e documento ativamente meus processos atrav\u00e9s de DevLogs, unindo rigor t\u00e9cnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso \u00e9 conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.\",\"sameAs\":[\"https:\\\/\\\/thiagorossi.com.br\\\/blog\",\"https:\\\/\\\/instagram.com\\\/thiagorossix86\",\"https:\\\/\\\/linkedin.com\\\/in\\\/thiagox86\"],\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/author\\\/thiagorossi\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Request e Response no CakePHP - BLOG THIAGO ROSSI","description":"Request e Response no CakePHP: No cora\u00e7\u00e3o de qualquer aplica\u00e7\u00e3o web existe um ciclo simples: o cliente (navegador) envia uma Requisi\u00e7\u00e3o ...","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:\/\/thiagorossi.com.br\/blog\/request-e-response-no-cakephp\/","og_locale":"pt_BR","og_type":"article","og_title":"Request e Response no CakePHP - BLOG THIAGO ROSSI","og_description":"Request e Response no CakePHP: No cora\u00e7\u00e3o de qualquer aplica\u00e7\u00e3o web existe um ciclo simples: o cliente (navegador) envia uma Requisi\u00e7\u00e3o ...","og_url":"https:\/\/thiagorossi.com.br\/blog\/request-e-response-no-cakephp\/","og_site_name":"BLOG THIAGO ROSSI","article_published_time":"2026-04-10T16:22:17+00:00","article_modified_time":"2026-04-10T16:23:45+00:00","og_image":[{"width":758,"height":426,"url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png","type":"image\/png"}],"author":"Thiago Rossi","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Thiago Rossi","Est. tempo de leitura":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thiagorossi.com.br\/blog\/request-e-response-no-cakephp\/#article","isPartOf":{"@id":"https:\/\/thiagorossi.com.br\/blog\/request-e-response-no-cakephp\/"},"author":{"name":"Thiago Rossi","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/person\/5f28286948ec2afdeb2e044a2196cd87"},"headline":"Request e Response no CakePHP","datePublished":"2026-04-10T16:22:17+00:00","dateModified":"2026-04-10T16:23:45+00:00","mainEntityOfPage":{"@id":"https:\/\/thiagorossi.com.br\/blog\/request-e-response-no-cakephp\/"},"wordCount":1035,"publisher":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#organization"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/request-e-response-no-cakephp\/#primaryimage"},"thumbnailUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png","articleSection":["CakePHP"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/thiagorossi.com.br\/blog\/request-e-response-no-cakephp\/","url":"https:\/\/thiagorossi.com.br\/blog\/request-e-response-no-cakephp\/","name":"Request e Response no CakePHP - BLOG THIAGO ROSSI","isPartOf":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thiagorossi.com.br\/blog\/request-e-response-no-cakephp\/#primaryimage"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/request-e-response-no-cakephp\/#primaryimage"},"thumbnailUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png","datePublished":"2026-04-10T16:22:17+00:00","dateModified":"2026-04-10T16:23:45+00:00","description":"Request e Response no CakePHP: No cora\u00e7\u00e3o de qualquer aplica\u00e7\u00e3o web existe um ciclo simples: o cliente (navegador) envia uma Requisi\u00e7\u00e3o ...","breadcrumb":{"@id":"https:\/\/thiagorossi.com.br\/blog\/request-e-response-no-cakephp\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thiagorossi.com.br\/blog\/request-e-response-no-cakephp\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/thiagorossi.com.br\/blog\/request-e-response-no-cakephp\/#primaryimage","url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png","contentUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png","width":758,"height":426,"caption":"CakePHP"},{"@type":"BreadcrumbList","@id":"https:\/\/thiagorossi.com.br\/blog\/request-e-response-no-cakephp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thiagorossi.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Request e Response no CakePHP"}]},{"@type":"WebSite","@id":"https:\/\/thiagorossi.com.br\/blog\/#website","url":"https:\/\/thiagorossi.com.br\/blog\/","name":"THIAGO ROSSI","description":"Mais de 20 anos de experi\u00eancia no mercado de TI!","publisher":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#organization"},"alternateName":"TR | CURSO WEB DEV","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thiagorossi.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/thiagorossi.com.br\/blog\/#organization","name":"THIAGO ROSSI","alternateName":"TR | CURSO WEB DEV","url":"https:\/\/thiagorossi.com.br\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/new-logo.webp","contentUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/new-logo.webp","width":300,"height":300,"caption":"THIAGO ROSSI"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/linkedin.com\/in\/thiagox86"]},{"@type":"Person","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/person\/5f28286948ec2afdeb2e044a2196cd87","name":"Thiago Rossi","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","caption":"Thiago Rossi"},"description":"Com mais de 20 anos de jornada na tecnologia, minha trajet\u00f3ria evoluiu do ensino t\u00e9cnico \u00e0 arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de solu\u00e7\u00f5es de Intelig\u00eancia Artificial nativa e an\u00e1lise de dados p\u00fablicos, utilizando o ecossistema PHP para transformar dados brutos em transpar\u00eancia e efici\u00eancia. Como autor e desenvolvedor, acredito na democratiza\u00e7\u00e3o do conhecimento. Essa vis\u00e3o resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura at\u00e9 os bastidores da ind\u00fastria de Jogos e IA. No universo de Game Design, sou autor do livro \"GDD \u2013 O Guia Definitivo\" e documento ativamente meus processos atrav\u00e9s de DevLogs, unindo rigor t\u00e9cnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso \u00e9 conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.","sameAs":["https:\/\/thiagorossi.com.br\/blog","https:\/\/instagram.com\/thiagorossix86","https:\/\/linkedin.com\/in\/thiagox86"],"url":"https:\/\/thiagorossi.com.br\/blog\/author\/thiagorossi\/"}]}},"_links":{"self":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/5887","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/comments?post=5887"}],"version-history":[{"count":1,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/5887\/revisions"}],"predecessor-version":[{"id":5888,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/5887\/revisions\/5888"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/media\/5819"}],"wp:attachment":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/media?parent=5887"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/categories?post=5887"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/tags?post=5887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}