{"id":2072,"date":"2026-06-24T15:41:51","date_gmt":"2026-06-24T18:41:51","guid":{"rendered":"https:\/\/desvendandoocodigo.com.br\/?p=2072"},"modified":"2026-06-24T15:58:50","modified_gmt":"2026-06-24T18:58:50","slug":"como-os-sites-sabem-que-voce-esta-logado-session-e-cookies-na-pratica","status":"publish","type":"post","link":"https:\/\/desvendandoocodigo.com.br\/?p=2072","title":{"rendered":"Como os Sites Sabem Que Voc\u00ea Est\u00e1 Logado? Session e Cookies na Pr\u00e1tica"},"content":{"rendered":"\n<p>Quando voc\u00ea faz login em um site, fecha uma p\u00e1gina e continua navegando normalmente, algo precisa informar ao sistema que voc\u00ea j\u00e1 foi autenticado.<\/p>\n\n\n\n<p>Mas como isso acontece?<\/p>\n\n\n\n<p>Como o servidor sabe que voc\u00ea \u00e9 voc\u00ea em cada nova requisi\u00e7\u00e3o?<\/p>\n\n\n\n<p>Muitos iniciantes imaginam que o navegador envia usu\u00e1rio e senha o tempo todo, mas n\u00e3o \u00e9 assim que funciona.<\/p>\n\n\n\n<p>Neste artigo vamos entender como Session e Cookies trabalham juntos para permitir autentica\u00e7\u00e3o em aplica\u00e7\u00f5es Node.js utilizando Express Session.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">O problema que precisa ser resolvido<\/h2>\n\n\n\n<p>HTTP \u00e9 um protocolo sem estado (stateless).<\/p>\n\n\n\n<p>Isso significa que cada requisi\u00e7\u00e3o enviada ao servidor \u00e9 independente da anterior.<\/p>\n\n\n\n<p>Imagine o seguinte cen\u00e1rio:<\/p>\n\n\n\n<ol>\n<li>Voc\u00ea faz login.<\/li>\n\n\n\n<li>O servidor valida suas credenciais.<\/li>\n\n\n\n<li>Voc\u00ea acessa outra p\u00e1gina.<\/li>\n<\/ol>\n\n\n\n<p>Como o servidor sabe que aquele usu\u00e1rio j\u00e1 fez login anteriormente?<\/p>\n\n\n\n<p>Se nada fosse armazenado, o sistema pediria autentica\u00e7\u00e3o a cada clique.<\/p>\n\n\n\n<p>\u00c9 justamente a\u00ed que entram as Sessions e os Cookies.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">O que \u00e9 uma Session?<\/h2>\n\n\n\n<p>A Session \u00e9 um espa\u00e7o de armazenamento mantido pelo servidor.<\/p>\n\n\n\n<p>Ap\u00f3s o login, o servidor cria uma sess\u00e3o contendo informa\u00e7\u00f5es importantes do usu\u00e1rio.<\/p>\n\n\n\n<p>Por exemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>req.session.usuario = {\n    id: 1,\n    nome: \"Administrador\",\n    email: \"admin@email.com\"\n};\n<\/code><\/pre>\n\n\n\n<p>Esses dados permanecem no servidor.<\/p>\n\n\n\n<p>O navegador n\u00e3o recebe essas informa\u00e7\u00f5es diretamente.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">O que \u00e9 um Cookie?<\/h2>\n\n\n\n<p>O Cookie funciona como uma identifica\u00e7\u00e3o.<\/p>\n\n\n\n<p>Em vez de enviar todos os dados do usu\u00e1rio para o navegador, o servidor envia apenas um identificador \u00fanico.<\/p>\n\n\n\n<p>Algo parecido com isto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>connect.sid=abc123xyz\n<\/code><\/pre>\n\n\n\n<p>Esse valor \u00e9 armazenado no navegador.<\/p>\n\n\n\n<p>Sempre que uma nova requisi\u00e7\u00e3o \u00e9 feita, o navegador envia automaticamente esse identificador.<\/p>\n\n\n\n<p>O servidor recebe o identificador e procura a sess\u00e3o correspondente.<\/p>\n\n\n\n<p>Se encontrar, sabe exatamente qual usu\u00e1rio est\u00e1 realizando a requisi\u00e7\u00e3o.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Pensando de forma simples<\/h2>\n\n\n\n<p>Imagine um guarda-volumes.<\/p>\n\n\n\n<p>O servidor guarda todos os seus objetos.<\/p>\n\n\n\n<p>Voc\u00ea recebe apenas uma chave.<\/p>\n\n\n\n<p>Quando retorna, apresenta a chave e recupera seus dados.<\/p>\n\n\n\n<p>A Session \u00e9 o guarda-volumes.<\/p>\n\n\n\n<p>O Cookie \u00e9 a chave.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Configurando Session no Node.js<\/h2>\n\n\n\n<p>No projeto utilizamos o middleware Express Session.<\/p>\n\n\n\n<p>Primeiro instalamos a biblioteca:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install express-session\n<\/code><\/pre>\n\n\n\n<p>Depois configuramos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>app.use(session({\n    secret: \"minha-chave-secreta\",\n    resave: false,\n    saveUninitialized: false,\n    cookie: {\n        maxAge: 1000 * 30\n    }\n}));\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">O que significa cada propriedade?<\/h3>\n\n\n\n<p><strong>secret<\/strong><\/p>\n\n\n\n<p>Utilizada para assinar a sess\u00e3o.<\/p>\n\n\n\n<p>Nunca deve ficar exposta diretamente no c\u00f3digo.<\/p>\n\n\n\n<p>O ideal \u00e9 armazenar em vari\u00e1veis de ambiente.<\/p>\n\n\n\n<p><strong>resave<\/strong><\/p>\n\n\n\n<p>Define se a sess\u00e3o deve ser salva novamente mesmo sem altera\u00e7\u00f5es.<\/p>\n\n\n\n<p><strong>saveUninitialized<\/strong><\/p>\n\n\n\n<p>Evita criar sess\u00f5es vazias sem necessidade.<\/p>\n\n\n\n<p><strong>cookie.maxAge<\/strong><\/p>\n\n\n\n<p>Define por quanto tempo a sess\u00e3o ficar\u00e1 v\u00e1lida.<\/p>\n\n\n\n<p>No exemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1000 * 30\n<\/code><\/pre>\n\n\n\n<p>A sess\u00e3o expira ap\u00f3s 30 segundos.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Criando o Login<\/h2>\n\n\n\n<p>Ap\u00f3s validar usu\u00e1rio e senha, criamos a sess\u00e3o:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>req.session.usuario = {\n    id: usuario.id,\n    nome: usuario.nome,\n    email: usuario.email\n};\n<\/code><\/pre>\n\n\n\n<p>Se tudo estiver correto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>return res.json({\n    mensagem: \"Login realizado com sucesso\"\n});\n<\/code><\/pre>\n\n\n\n<p>Caso contr\u00e1rio:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>return res.status(401).json({\n    mensagem: \"Usu\u00e1rio ou senha inv\u00e1lidos\"\n});\n<\/code><\/pre>\n\n\n\n<p>Observe que a mensagem n\u00e3o informa qual campo est\u00e1 incorreto.<\/p>\n\n\n\n<p>Isso \u00e9 uma pr\u00e1tica importante de seguran\u00e7a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Protegendo Rotas com Middleware<\/h2>\n\n\n\n<p>Depois do login precisamos impedir que usu\u00e1rios n\u00e3o autenticados acessem determinadas \u00e1reas.<\/p>\n\n\n\n<p>Criamos ent\u00e3o um middleware:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function protegerRota(req, res, next) {\n\n    if (!req.session.usuario) {\n        return res.status(401).json({\n            mensagem: \"Acesso negado\"\n        });\n    }\n\n    next();\n}\n<\/code><\/pre>\n\n\n\n<p>Agora basta utiliz\u00e1-lo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>app.get(\n    \"\/api\/protegida\",\n    protegerRota,\n    (req, res) =&gt; {\n\n        res.json({\n            mensagem: \"Rota protegida\"\n        });\n\n    }\n);\n<\/code><\/pre>\n\n\n\n<p>Se a sess\u00e3o n\u00e3o existir, o acesso ser\u00e1 bloqueado.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">O que acontece quando a Session expira?<\/h2>\n\n\n\n<p>No projeto configuramos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cookie: {\n    maxAge: 1000 * 30\n}\n<\/code><\/pre>\n\n\n\n<p>Ap\u00f3s 30 segundos sem uma sess\u00e3o v\u00e1lida, o usu\u00e1rio perde a autentica\u00e7\u00e3o.<\/p>\n\n\n\n<p>Ao tentar acessar novamente uma rota protegida, receber\u00e1:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"mensagem\": \"Acesso negado\"\n}\n<\/code><\/pre>\n\n\n\n<p>Essa \u00e9 uma forma simples de controlar o tempo de perman\u00eancia do usu\u00e1rio autenticado.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Como funciona o Logout?<\/h2>\n\n\n\n<p>Fazer logout significa destruir a sess\u00e3o e remover o cookie associado.<\/p>\n\n\n\n<p>No Express Session podemos fazer assim:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>req.session.destroy(() =&gt; {\n\n    res.clearCookie(\"connect.sid\");\n\n    res.json({\n        mensagem: \"Logout realizado com sucesso\"\n    });\n\n});\n<\/code><\/pre>\n\n\n\n<p>Dessa forma:<\/p>\n\n\n\n<ol>\n<li>A sess\u00e3o \u00e9 removida do servidor.<\/li>\n\n\n\n<li>O cookie \u00e9 apagado do navegador.<\/li>\n\n\n\n<li>O usu\u00e1rio perde acesso \u00e0s rotas protegidas.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Session x JWT<\/h2>\n\n\n\n<p>Uma d\u00favida comum \u00e9:<\/p>\n\n\n\n<p>Qual a diferen\u00e7a entre Session e JWT?<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Session<\/h3>\n\n\n\n<ul>\n<li>Dados ficam armazenados no servidor.<\/li>\n\n\n\n<li>Cookie guarda apenas um identificador.<\/li>\n\n\n\n<li>Mais simples para aplica\u00e7\u00f5es tradicionais.<\/li>\n\n\n\n<li>F\u00e1cil controle de logout.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">JWT<\/h3>\n\n\n\n<ul>\n<li>Dados ficam dentro do token.<\/li>\n\n\n\n<li>Token normalmente \u00e9 armazenado no navegador.<\/li>\n\n\n\n<li>N\u00e3o depende de armazenamento de sess\u00e3o no servidor.<\/li>\n\n\n\n<li>Muito utilizado em APIs e arquiteturas distribu\u00eddas.<\/li>\n<\/ul>\n\n\n\n<p>Nenhuma solu\u00e7\u00e3o \u00e9 melhor em todos os cen\u00e1rios.<\/p>\n\n\n\n<p>Cada uma resolve problemas diferentes.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Conclus\u00e3o<\/h2>\n\n\n\n<p>Quando voc\u00ea faz login em um sistema, o servidor cria uma sess\u00e3o contendo suas informa\u00e7\u00f5es.<\/p>\n\n\n\n<p>O navegador recebe apenas um identificador armazenado em um Cookie.<\/p>\n\n\n\n<p>A cada nova requisi\u00e7\u00e3o, esse identificador \u00e9 enviado automaticamente, permitindo que o servidor reconhe\u00e7a quem est\u00e1 acessando a aplica\u00e7\u00e3o.<\/p>\n\n\n\n<p>Com isso conseguimos:<\/p>\n\n\n\n<ul>\n<li>Fazer login<\/li>\n\n\n\n<li>Proteger rotas<\/li>\n\n\n\n<li>Controlar expira\u00e7\u00e3o de sess\u00e3o<\/li>\n\n\n\n<li>Implementar logout<\/li>\n\n\n\n<li>Gerenciar autentica\u00e7\u00e3o de forma segura<\/li>\n<\/ul>\n\n\n\n<p>Entender Session e Cookies \u00e9 um passo fundamental para compreender como aplica\u00e7\u00f5es web reais funcionam por tr\u00e1s das telas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Assista \u00e0 aula<\/h2>\n\n\n\n<p>\ud83c\udfa5 <strong>Como os Sites Sabem Que Voc\u00ea Est\u00e1 Logado? Session e Cookies na Pr\u00e1tica<\/strong><\/p>\n\n\n\n<p>Neste v\u00eddeo voc\u00ea aprende na pr\u00e1tica como funciona a autentica\u00e7\u00e3o utilizando Session e Cookies no Node.js com Express Session.<\/p>\n\n\n\n<p>\ud83d\udcfa V\u00eddeo editado:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Como os Sites Sabem Que Voc\u00ea Est\u00e1 Logado? Session e Cookies na Pr\u00e1tica\" width=\"960\" height=\"540\" src=\"https:\/\/www.youtube.com\/embed\/qWFmqC_vnd8?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Quer acompanhar o desenvolvimento completo?<\/h2>\n\n\n\n<p>Se voc\u00ea prefere ver todo o processo de constru\u00e7\u00e3o do projeto, incluindo os testes, explica\u00e7\u00f5es extras e d\u00favidas respondidas durante a transmiss\u00e3o, assista \u00e0 live completa:<\/p>\n\n\n\n<p>\ud83d\udcfa Live completa:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Como Funciona a Autentica\u00e7\u00e3o dos Sites? | Cookies e Session na Pr\u00e1tica\" width=\"960\" height=\"540\" src=\"https:\/\/www.youtube.com\/embed\/8lSOxEQu3kM?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>No v\u00eddeo mostramos toda a implementa\u00e7\u00e3o utilizando Node.js, Express Session e autentica\u00e7\u00e3o na pr\u00e1tica.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quando voc\u00ea faz login em um site, fecha uma p\u00e1gina e continua navegando normalmente, algo precisa informar ao sistema que voc\u00ea j\u00e1 foi autenticado. Mas como isso acontece? Como o servidor sabe que voc\u00ea \u00e9 voc\u00ea em cada nova requisi\u00e7\u00e3o? Muitos iniciantes imaginam que o navegador envia usu\u00e1rio e senha o tempo todo, mas n\u00e3o \u00e9 assim que funciona. Neste artigo vamos entender como Session e Cookies trabalham juntos para permitir autentica\u00e7\u00e3o em aplica\u00e7\u00f5es Node.js utilizando Express Session. O problema que precisa ser resolvido HTTP \u00e9 um protocolo sem estado (stateless). Isso significa que cada requisi\u00e7\u00e3o enviada ao servidor \u00e9 independente da anterior. Imagine o seguinte cen\u00e1rio: Como o servidor sabe que aquele usu\u00e1rio j\u00e1 fez login anteriormente? Se nada fosse armazenado, o sistema pediria autentica\u00e7\u00e3o a cada clique. \u00c9 justamente a\u00ed que entram as Sessions e os Cookies. O que \u00e9 uma Session? A Session \u00e9 um espa\u00e7o de armazenamento mantido pelo servidor. Ap\u00f3s o login, o servidor cria uma sess\u00e3o contendo informa\u00e7\u00f5es importantes do usu\u00e1rio. Por exemplo: Esses dados permanecem no servidor. O navegador n\u00e3o recebe essas informa\u00e7\u00f5es diretamente. O que \u00e9 um Cookie? O Cookie funciona como uma identifica\u00e7\u00e3o. Em vez de enviar todos os dados do usu\u00e1rio para o navegador, o servidor envia apenas um identificador \u00fanico. Algo parecido com isto: Esse valor \u00e9 armazenado no navegador. Sempre que uma nova requisi\u00e7\u00e3o \u00e9 feita, o navegador envia automaticamente esse identificador. O servidor recebe o identificador e procura a sess\u00e3o correspondente. Se encontrar, sabe exatamente qual usu\u00e1rio est\u00e1 realizando a requisi\u00e7\u00e3o. Pensando de forma simples Imagine um guarda-volumes. O servidor guarda todos os seus objetos. Voc\u00ea recebe apenas uma chave. Quando retorna, apresenta a chave e recupera seus dados. A Session \u00e9 o guarda-volumes. O Cookie \u00e9 a chave. Configurando Session no Node.js No projeto utilizamos o middleware Express Session. Primeiro instalamos a biblioteca: Depois configuramos: O que significa cada propriedade? secret Utilizada para assinar a sess\u00e3o. Nunca deve ficar exposta diretamente no c\u00f3digo. O ideal \u00e9 armazenar em vari\u00e1veis de ambiente. resave Define se a sess\u00e3o deve ser salva novamente mesmo sem altera\u00e7\u00f5es. saveUninitialized Evita criar sess\u00f5es vazias sem necessidade. cookie.maxAge Define por quanto tempo a sess\u00e3o ficar\u00e1 v\u00e1lida. No exemplo: A sess\u00e3o expira ap\u00f3s 30 segundos. Criando o Login Ap\u00f3s validar usu\u00e1rio e senha, criamos a sess\u00e3o: Se tudo estiver correto: Caso contr\u00e1rio: Observe que a mensagem n\u00e3o informa qual campo est\u00e1 incorreto. Isso \u00e9 uma pr\u00e1tica importante de seguran\u00e7a. Protegendo Rotas com Middleware Depois do login precisamos impedir que usu\u00e1rios n\u00e3o autenticados acessem determinadas \u00e1reas. Criamos ent\u00e3o um middleware: Agora basta utiliz\u00e1-lo: Se a sess\u00e3o n\u00e3o existir, o acesso ser\u00e1 bloqueado. O que acontece quando a Session expira? No projeto configuramos: Ap\u00f3s 30 segundos sem uma sess\u00e3o v\u00e1lida, o usu\u00e1rio perde a autentica\u00e7\u00e3o. Ao tentar acessar novamente uma rota protegida, receber\u00e1: Essa \u00e9 uma forma simples de controlar o tempo de perman\u00eancia do usu\u00e1rio autenticado. Como funciona o Logout? Fazer logout significa destruir a sess\u00e3o e remover o cookie associado. No Express Session podemos fazer assim: Dessa forma: Session x JWT Uma d\u00favida comum \u00e9: Qual a diferen\u00e7a entre Session e JWT? Session JWT Nenhuma solu\u00e7\u00e3o \u00e9 melhor em todos os cen\u00e1rios. Cada uma resolve problemas diferentes. Conclus\u00e3o Quando voc\u00ea faz login em um sistema, o servidor cria uma sess\u00e3o contendo suas informa\u00e7\u00f5es. O navegador recebe apenas um identificador armazenado em um Cookie. A cada nova requisi\u00e7\u00e3o, esse identificador \u00e9 enviado automaticamente, permitindo que o servidor reconhe\u00e7a quem est\u00e1 acessando a aplica\u00e7\u00e3o. Com isso conseguimos: Entender Session e Cookies \u00e9 um passo fundamental para compreender como aplica\u00e7\u00f5es web reais funcionam por tr\u00e1s das telas. Assista \u00e0 aula \ud83c\udfa5 Como os Sites Sabem Que Voc\u00ea Est\u00e1 Logado? Session e Cookies na Pr\u00e1tica Neste v\u00eddeo voc\u00ea aprende na pr\u00e1tica como funciona a autentica\u00e7\u00e3o utilizando Session e Cookies no Node.js com Express Session. \ud83d\udcfa V\u00eddeo editado: Quer acompanhar o desenvolvimento completo? Se voc\u00ea prefere ver todo o processo de constru\u00e7\u00e3o do projeto, incluindo os testes, explica\u00e7\u00f5es extras e d\u00favidas respondidas durante a transmiss\u00e3o, assista \u00e0 live completa: \ud83d\udcfa Live completa: No v\u00eddeo mostramos toda a implementa\u00e7\u00e3o utilizando Node.js, Express Session e autentica\u00e7\u00e3o na pr\u00e1tica.<\/p>\n","protected":false},"author":1,"featured_media":2073,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2072"}],"collection":[{"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2072"}],"version-history":[{"count":5,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2072\/revisions"}],"predecessor-version":[{"id":2078,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2072\/revisions\/2078"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/media\/2073"}],"wp:attachment":[{"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2072"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2072"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2072"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}