{"id":65851,"date":"2023-12-08T08:57:38","date_gmt":"2023-12-08T11:57:38","guid":{"rendered":"https:\/\/kinsta.com\/pt\/?p=65851&#038;preview=true&#038;preview_id=65851"},"modified":"2023-12-18T12:43:07","modified_gmt":"2023-12-18T15:43:07","slug":"jira-api","status":"publish","type":"post","link":"https:\/\/kinsta.com\/pt\/blog\/jira-api\/","title":{"rendered":"Criar uma Lista de Tarefas Hospedada pela Kinsta Usando a API do Jira e React"},"content":{"rendered":"<p>O Jira \u00e9 uma ferramenta popular de gerenciamento de projetos que ajuda voc\u00ea a acompanhar as tarefas de um projeto. No entanto, quando voc\u00ea trabalha em um projeto grande, o painel do Jira pode ficar desorganizado \u00e0 medida que o n\u00famero de tarefas e membros da equipe aumenta.<\/p>\n<p>Para resolver esse problema, voc\u00ea pode usar a <a href=\"https:\/\/developer.atlassian.com\/server\/jira\/platform\/rest-apis\/\" target=\"_blank\" rel=\"noopener noreferrer\">API REST do Jira<\/a> para gerar um aplicativo de lista de tarefas simplificado que exibe as tarefas atribu\u00eddas e seus prazos. A API permite que voc\u00ea interaja de forma program\u00e1tica com o Jira para criar, recuperar, atualizar e excluir problemas e acessar dados do usu\u00e1rio e detalhes do projeto.<\/p>\n<p>Este tutorial orienta voc\u00ea no desenvolvimento de um aplicativo de lista de tarefas com o <a href=\"https:\/\/docs.sevalla.com\/templates\/overview\">Node.js<\/a> como servidor para buscar problemas da sua conta Jira e um aplicativo React para exibi-los. Voc\u00ea tamb\u00e9m aprender\u00e1 a hospedar o frontend e o servidor na Kinsta.<br \/>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc><\/p>\n<h2>Pr\u00e9-requisitos<\/h2>\n<p>Para acompanhar, voc\u00ea precisa de:<\/p>\n<ul>\n<li><a href=\"https:\/\/nodejs.org\/en\/download\/current\" target=\"_blank\" rel=\"noopener noreferrer\">Node.js<\/a> e <a href=\"https:\/\/docs.npmjs.com\/downloading-and-installing-node-js-and-npm\" target=\"_blank\" rel=\"noopener noreferrer\">Node Package Manager<\/a> (npm) instalados em sua m\u00e1quina de desenvolvimento.<\/li>\n<li>Uma <a href=\"https:\/\/www.atlassian.com\/software\/jira\" target=\"_blank\" rel=\"noopener noreferrer\">conta do Jira<\/a> para acessar as tarefas.<\/li>\n<li>Um s\u00f3lido conhecimento do <a href=\"https:\/\/kinsta.com\/pt\/blog\/o-que-e-node-js\/\">Node.js<\/a> e <a href=\"https:\/\/kinsta.com\/pt\/blog\/o-que-e-react-js\/\">React<\/a>.<\/li>\n<\/ul>\n<h2>Como criar o backend com o Node.js e o Express<\/h2>\n<p>O <a href=\"https:\/\/kinsta.com\/pt\/blog\/o-que-e-express-js\/\">Express<\/a> \u00e9 um framework popular do Node.js que fornece um ambiente simplificado para a cria\u00e7\u00e3o de aplicativos no lado do servidor. O Express simplifica a manipula\u00e7\u00e3o de rotas e facilita as intera\u00e7\u00f5es com recursos externos, como APIs, bancos de dados e aplicativos de frontend.<\/p>\n<p>Siga as etapas abaixo para configurar o servidor:<\/p>\n<ol start=\"1\">\n<li>Crie um novo diret\u00f3rio e navegue at\u00e9 ele. Em seguida, inicialize o Node.js executando o comando abaixo:\n<pre><code class=\"language-bash\">npm init -y<\/code><\/pre>\n<p>Esse comando cria um arquivo <strong>package.json<\/strong> com as configura\u00e7\u00f5es padr\u00e3o na raiz da pasta do seu aplicativo.<\/li>\n<li>Em seguida, instale todas as depend\u00eancias necess\u00e1rias para seu projeto executando o seguinte comando:\n<pre><code class=\"language-bash\">npm install express dotenv axios<\/code><\/pre>\n<p>O comando acima instala o seguinte:<\/p>\n<ul>\n<li><code><a href=\"https:\/\/www.npmjs.com\/package\/express\" target=\"_blank\" rel=\"noopener noreferrer\">express<\/a><\/code> &#8211; Um framework m\u00ednimo do Node.js para criar APIs.<\/li>\n<li><code><a href=\"https:\/\/www.npmjs.com\/package\/dotenv\" target=\"_blank\" rel=\"noopener noreferrer\">dotenv<\/a><\/code> &#8211; Um m\u00f3dulo que carrega vari\u00e1veis <code>.env<\/code> para <code>process.env<\/code> para permitir que voc\u00ea as acesse com seguran\u00e7a.<\/li>\n<li><code><a href=\"https:\/\/www.npmjs.com\/package\/axios\" target=\"_blank\" rel=\"noopener noreferrer\">axios<\/a><\/code> &#8211; Um cliente HTTP baseado em promessas para o Node.js. Voc\u00ea o utiliza para fazer chamadas de API para o Jira.<\/li>\n<\/ul>\n<\/li>\n<li>Depois que a instala\u00e7\u00e3o for bem-sucedida, crie um arquivo <strong>.env<\/strong> na raiz do seu projeto e adicione o n\u00famero <code>PORT<\/code>:\n<pre><code class=\"language-bash\">PORT=3000<\/code><\/pre>\n<p>Esse \u00e9 o n\u00famero da porta que o servidor escuta. Voc\u00ea pode alter\u00e1-lo para uma porta de sua escolha.<\/li>\n<li>Crie um arquivo <strong>index.js<\/strong> na pasta raiz do seu projeto e adicione o seguinte c\u00f3digo para importar o Express, criar uma inst\u00e2ncia de um aplicativo Express e iniciar o servidor:\n<pre><code class=\"language-javascript\">const express = require('express');\nrequire('dotenv').config()\nconst app = express();\nconst PORT = process.env.PORT;\n\n\/\/ Define routes here\n\napp.listen(PORT, () =&gt; {\n  console.log(`Server is running on port ${PORT}`);\n});<\/code><\/pre>\n<\/li>\n<li>Por fim, no arquivo <strong>package.json<\/strong>, adicione um script para iniciar o servidor:\n<pre><code class=\"language-javascript\">\"scripts\": {\n   \"start\": \"node index\"\n  },<\/code><\/pre>\n<p>Agora, voc\u00ea pode executar o script de inicializa\u00e7\u00e3o no terminal:<\/p>\n<pre><code class=\"language-bash\">npm run start<\/code><\/pre>\n<p>Esse comando inicia o servidor. Voc\u00ea dever\u00e1 ver o seguinte texto registrado no terminal:<\/p>\n<pre><code class=\"language-bash\">Server is running on port 3000<\/code><\/pre>\n<p>Com o servidor instalado e em execu\u00e7\u00e3o, voc\u00ea pode agora configurar o aplicativo Jira.<\/li>\n<\/ol>\n<h3>Como configurar um aplicativo Jira<\/h3>\n<p>Para usar a API REST do Jira, voc\u00ea precisa autenticar uma conta de usu\u00e1rio no site do Jira. A API do aplicativo to-do que voc\u00ea criou usa autentica\u00e7\u00e3o b\u00e1sica com um endere\u00e7o de e-mail da conta Atlassian e um token de API.<\/p>\n<p>Veja como voc\u00ea pode configurar isso:<\/p>\n<ol start=\"1\">\n<li>Crie uma <a href=\"https:\/\/www.atlassian.com\/software\/jira\" target=\"_blank\" rel=\"noopener noreferrer\">conta Jira<\/a> ou fa\u00e7a login se voc\u00ea j\u00e1 tiver uma.<\/li>\n<li>Navegue at\u00e9 a <a href=\"https:\/\/id.atlassian.com\/manage-profile\/security\/api-tokens\" target=\"_blank\" rel=\"noopener noreferrer\">se\u00e7\u00e3o de seguran\u00e7a<\/a> do seu perfil da Atlassian e clique em <strong>Create API token<\/strong>.<\/li>\n<li>Na caixa de di\u00e1logo que aparece, insira um r\u00f3tulo para o token (por exemplo, &#8220;jira-todo-list&#8221;) e clique em <strong>Create<\/strong>.<\/li>\n<li>Copie o token para sua \u00e1rea de transfer\u00eancia.<\/li>\n<li>Por fim, armazene o token de API em seu arquivo <strong>.env<\/strong>:\n<pre><code class=\"bash\">JIRA_API_TOKEN=\"your-api-token\"<\/code><\/pre>\n<p>Agora, voc\u00ea pode acessar a API do Jira usando a autentica\u00e7\u00e3o b\u00e1sica.<\/li>\n<\/ol>\n<h3>Configure as rotas para buscar problemas do Jira<\/h3>\n<p>Agora que voc\u00ea configurou um aplicativo Jira. Vamos configurar rotas para que voc\u00ea possa buscar problemas do Jira em seu servidor Node.js.<\/p>\n<p>Para iniciar uma solicita\u00e7\u00e3o \u00e0 API do Jira, voc\u00ea deve usar o token de API do Jira que salvou no arquivo <strong>.env<\/strong>. Recupere o token da API usando <code>process.env<\/code> e atribua-o a uma vari\u00e1vel chamada <code>JIRA_API_TOKEN<\/code> em seu arquivo <strong>index.js<\/strong>:<\/p>\n<pre><code class=\"language-javascript\">const JIRA_API_TOKEN = process.env.JIRA_API_TOKEN<\/code><\/pre>\n<p>Agora, voc\u00ea precisa definir a URL do endpoint para sua solicita\u00e7\u00e3o de API. Essa URL cont\u00e9m o dom\u00ednio do Jira e uma instru\u00e7\u00e3o JQL (<a href=\"https:\/\/www.atlassian.com\/blog\/jira-software\/jql-the-most-flexible-way-to-search-jira-14\">Jira\u00a0Query Language<\/a>). O &#8220;dom\u00ednio do Jira&#8221; se refere ao endere\u00e7o de URL da sua organiza\u00e7\u00e3o no Jira, que geralmente tem o formato <code>org.atlassian.net<\/code>, onde <code>org<\/code> representa o nome da sua organiza\u00e7\u00e3o. J\u00e1 a JQL (Jira Query Language) \u00e9 uma linguagem de consulta usada para interagir com os problemas registrados no Jira.<\/p>\n<p>Comece adicionando o dom\u00ednio do Jira ao arquivo <strong>.env<\/strong>:<\/p>\n<pre><code class=\"bash\">JIRA_DOMAIN=\"your-jira-domain\"<\/code><\/pre>\n<p>Voc\u00ea tamb\u00e9m precisa armazenar seu e-mail do Jira no arquivo <strong>.env<\/strong>, pois ele ser\u00e1 usado para autoriza\u00e7\u00e3o ao fazer uma solicita\u00e7\u00e3o ao Jira:<\/p>\n<pre><code class=\"language-bash\">JIRA_EMAIL=\"your-jira-email\"<\/code><\/pre>\n<p>Em seguida, adicione as duas vari\u00e1veis de ambiente e construa a URL do endpoint usando o dom\u00ednio e a seguinte instru\u00e7\u00e3o JQL. Esta consulta seleciona os problemas que est\u00e3o com o status &#8220;Em andamento&#8221; ou &#8220;A fazer&#8221; para o usu\u00e1rio conectado e, em seguida, os organiza por status.<\/p>\n<pre><code class=\"language-javascript\">const jiraDomain = process.env.JIRA_DOMAIN;\nconst email= process.env.JIRA_EMAIL;\n\nconst jql = \"status%20in%20(%22In%20progress%22%2C%20%22To%20do%22)%20OR%20assignee%20%3D%20currentUser()%20order%20by%20status\";\n \nconst apiUrl = `https:\/\/${jiraDomain}\/rest\/api\/3\/search?jql=${jql}`;<\/code><\/pre>\n<p>Antes de criar uma rota, importe tamb\u00e9m o Axios em seu arquivo index.js:<\/p>\n<pre><code class=\"language-javascript\">const axios = require(\"axios\")<\/code><\/pre>\n<p>Agora voc\u00ea pode criar uma rota para fazer uma solicita\u00e7\u00e3o GET \u00e0 API do Jira e retornar os problemas. Em <strong>index.js<\/strong>, adicione o seguinte c\u00f3digo:<\/p>\n<pre><code class=\"language-javascript\">app.get('\/issues\/all', async (req, res) =&gt; {\n  })<\/code><\/pre>\n<p>Agora, use o m\u00e9todo <code>axios.get<\/code> para fazer uma solicita\u00e7\u00e3o GET para a API REST do Jira. Voc\u00ea cria o cabe\u00e7alho <code>Authorization<\/code> codificando em base64 seu e-mail do Jira e o token da API:<\/p>\n<pre><code class=\"language-javascript\">const response = await axios.get(apiUrl, {\n        headers: {\n        Authorization: `Basic ${Buffer.from(\n          `${email}:${JIRA_API_TOKEN}`\n        ).toString(\"base64\")}`,\n        Accept: \"application\/json\",\n      },\n    });<\/code><\/pre>\n<p>Aguarde a resposta da API do Jira e salve em uma vari\u00e1vel. A resposta cont\u00e9m uma propriedade chamada <code>issues<\/code>, que cont\u00e9m uma array de objetos de problema:<\/p>\n<pre><code class=\"language-javascript\">const data = await response.json();\nconst { issues } = data;<\/code><\/pre>\n<p>Em seguida, itere sobre a array <code>issues<\/code>, extraia somente as informa\u00e7\u00f5es relevantes sobre os itens de tarefas e retorne em uma resposta JSON:<\/p>\n<pre><code class=\"language-javascript\">let cleanedIssues = [];\nissues.forEach((issue) =&gt; {\n      const issueData = {\n        id: issue.id,\n        projectName: issue.fields.project.name,\n        status: issue.fields.status.name,\n        deadline: issue.fields.duedate,\n      };\n      cleanedIssues.push(issueData);\n});\nres.status(200).json({ issues: cleanedIssues });<\/code><\/pre>\n<p>Se voc\u00ea fizer uma solicita\u00e7\u00e3o para <code>http:\/\/localhost:3000\/issues\/all<\/code>, dever\u00e1 receber um objeto JSON contendo os problemas:<\/p>\n<pre><code class=\"language-bash\">curl localhost:3000\/issues\/all<\/code><\/pre>\n<p>Voc\u00ea pode at\u00e9 mesmo levar isso adiante usando um provedor como o SendGrid e um cron jobs para enviar e-mails di\u00e1rios contendo as tarefas atribu\u00eddas.<\/p>\n<h3>Hospede seu aplicativo Node.js na Kinsta<\/h3>\n<p>Antes de hospedar seu aplicativo na Kinsta, ative o <a href=\"https:\/\/kinsta.com\/pt\/blog\/bibliotecas-node-js\/#2-cors\">CORS (Cross-Origin Resource Sharing)<\/a> para evitar um erro de <code>access-control-allow-origin<\/code>, j\u00e1 que voc\u00ea hospeda o backend e o frontend em dom\u00ednios diferentes. Para fazer isso, voc\u00ea deve:<\/p>\n<ol start=\"1\">\n<li>Instalar o <a href=\"https:\/\/www.npmjs.com\/package\/cors\" target=\"_blank\" rel=\"noopener noreferrer\">pacote npm cors<\/a> executando este comando em seu terminal:\n<pre><code class=\"language-bash\">npm install cors<\/code><\/pre>\n<\/li>\n<li>Em seguida, importar o pacote <strong>index.js<\/strong>.\n<pre><code class=\"language-javascript\">const cors = require('cors')<\/code><\/pre>\n<\/li>\n<li>Em seguida, configurar o CORS como middleware para ativ\u00e1-lo para cada solicita\u00e7\u00e3o de entrada. Adicione o seguinte c\u00f3digo na parte superior do seu arquivo <strong>index.js<\/strong>:\n<pre><code class=\"language-javascript\">app.use(cors());<\/code><\/pre>\n<p>Agora voc\u00ea pode enviar solicita\u00e7\u00f5es HTTP ao seu servidor de um dom\u00ednio diferente sem encontrar erros de CORS.<\/li>\n<\/ol>\n<p>Em seguida, envie seu c\u00f3digo para um provedor Git preferido <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/bitbucket#grant-access-to-the-kinsta-bitbucket-application\">(Bitbucket<\/a>, <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/github#authenticate-and-authorize\">GitHub<\/a> ou <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/gitlab#authorize-the-kinsta-gitlab-application\">GitLab<\/a>) e siga as etapas abaixo para hosped\u00e1-lo:<\/p>\n<ol start=\"1\">\n<li>Fa\u00e7a login ou crie uma conta para visualizar seu painel <a href=\"https:\/\/my.kinsta.com\/?lang=pt\" target=\"_blank\" rel=\"noopener noreferrer\">MyKinsta<\/a>.<\/li>\n<li>Autorize a Kinsta com seu provedor Git.<\/li>\n<li>Clique em <strong>Aplicativos<\/strong> na barra lateral esquerda e, em seguida, clique em <strong>Adicionar aplicativo<\/strong>.<\/li>\n<li>Selecione o reposit\u00f3rio e a branch a partir da qual voc\u00ea deseja implantar.<\/li>\n<li>Atribua um nome exclusivo ao seu aplicativo e escolha um <strong>local de centro de dados<\/strong>.<\/li>\n<li>Adicione as vari\u00e1veis de ambiente. N\u00e3o h\u00e1 necessidade de adicionar o PORT como uma vari\u00e1vel de ambiente, pois a Kinsta lida com isso automaticamente. Marque as caixas ao lado de <strong>Dispon\u00edvel durante o tempo de execu\u00e7\u00e3o<\/strong> e <strong>Dispon\u00edvel durante o processo de build<\/strong>:\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/kinsta-environment-variables.png\" alt=\"Vari\u00e1veis de ambiente do aplicativo Kinsta.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Vari\u00e1veis de ambiente do aplicativo Kinsta.<\/figcaption><\/figure><\/li>\n<li>Revise outras informa\u00e7\u00f5es (voc\u00ea pode deixar os valores padr\u00e3o) e clique em <strong>Criar aplicativo<\/strong>.<\/li>\n<\/ol>\n<p>Agora, seu servidor foi implantado com sucesso na Kinsta. No menu \u00e0 esquerda, clique em <strong>Dom\u00ednios <\/strong>e copie o dom\u00ednio principal. Esse \u00e9 o endpoint de URL do seu servidor.<\/p>\n<h2>Crie um aplicativo React para exibir os problemas<\/h2>\n<p>Em seguida, voc\u00ea usar\u00e1 o React para criar o frontend do seu aplicativo e o CSS para estiliz\u00e1-lo. Siga as etapas abaixo para criar um projeto React com o <a href=\"https:\/\/docs.sevalla.com\/templates\/overview#react-with-vite\">Vite<\/a>:<\/p>\n<ol start=\"1\">\n<li>Crie um novo projeto React chamado <code>jira-todo<\/code>:\n<pre><code class=\"language-bash\">npx create-vite jira-todo --template react<\/code><\/pre>\n<\/li>\n<li>Navegue at\u00e9 o diret\u00f3rio do projeto e instale as depend\u00eancias necess\u00e1rias:\n<pre><code class=\"language-bash\">npm install<\/code><\/pre>\n<\/li>\n<li>Inicie o servidor de desenvolvimento:\n<pre><code class=\"language-bash\">npm run dev<\/code><\/pre>\n<\/li>\n<\/ol>\n<h3>Obtenha problemas do servidor<\/h3>\n<ol start=\"1\">\n<li>Limpe o conte\u00fado do <strong>App.jsx<\/strong> e adicione o seguinte c\u00f3digo:<\/li>\n<\/ol>\n<pre><code class=\"language-javascript\">function App() {\n\n  return (\n    &lt;div className=\"App\"&gt;\n      &lt;h1&gt;What's on my list today?&lt;\/h1&gt;\n      {\/* Display issues *\/}\n\n   &lt;\/div&gt;\n );\n}\n\nexport default App;<\/code><\/pre>\n<ol start=\"2\">\n<li>Antes de voc\u00ea come\u00e7ar a buscar os problemas, armazene a URL do servidor da Kinsta em um arquivo <strong>.env<\/strong> na raiz da pasta do seu aplicativo:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">VITE_SERVER_BASE_URL=\"your-hosted-url\"<\/code><\/pre>\n<ol start=\"3\">\n<li>Obtenha a URL em <strong>App.jsx<\/strong> adicionando a seguinte linha na parte superior do arquivo:<\/li>\n<\/ol>\n<pre><code class=\"language-javascript\">const SERVER_BASE_URL=import.meta.env.VITE_SERVER_BASE_URL<\/code><\/pre>\n<ol start=\"4\">\n<li>Em seu componente, crie uma fun\u00e7\u00e3o ass\u00edncrona chamada <code>fetchData<\/code> e fa\u00e7a uma solicita\u00e7\u00e3o GET para o endpoint <code>\/issues\/all<\/code> no servidor Express. Quando voc\u00ea receber uma resposta, analise como JSON e armazene os dados em um valor de estado chamado <code>data<\/code>:<\/li>\n<\/ol>\n<pre><code class=\"language-javascript\">import { useCallback, useEffect, useState } from \"react\";\n\nfunction App() {\n  const SERVER_BASE_URL=import.meta.env.VITE_SERVER_BASE_URL\n\n  const [data, setData] = useState([]);\n  const fetchData = useCallback(async () =&gt; {\n    try {\n      const response = await fetch(`${SERVER_BASE_URL}\/issues\/all`);\n      if (!response.ok) {\n        throw new Error('Network response was not ok');\n     }\n      const data = await response.json();\n      \tsetData(data.issues);\n    } catch (error) {\n      console.error('Error fetching data:', error);\n  }\n     },[SERVER_BASE_URL]);\n\n  useEffect(() =&gt; {\n    \/\/ Fetch data when the component mounts\n    fetchData();\n     },[fetchData]);\n\n  return (\n    &lt;div className=\"App\"&gt;\n        &lt;h1&gt;What's on my list today?&lt;\/h1&gt;\n      \n    &lt;\/div&gt;\n  );\n}\n\nexport default App;<\/code><\/pre>\n<p>Observe que voc\u00ea usa o hook <code>useEffect<\/code> para executar a fun\u00e7\u00e3o <code>fetchData<\/code> quando o componente \u00e9 montado.<\/p>\n<h3>Renderize os problemas do Jira no navegador<\/h3>\n<ol start=\"1\">\n<li>Agora, voc\u00ea pode modificar a instru\u00e7\u00e3o de retorno do seu componente para iterar sobre os problemas e list\u00e1-los no navegador:<\/li>\n<\/ol>\n<pre><code class=\"language-javascript\">return (\n  &lt;div&gt;\n    &lt;h1&gt;What's on my list today?&lt;\/h1&gt;\n    &lt;section&gt;\n      \t{data && data.map(issue =&gt; {\n      \treturn &lt;div className=\"issues\" key={issue.id}&gt;\n        &lt;div&gt;\n         &lt;div&gt;{issue.summary}&lt;\/div&gt;\n          &lt;small&gt;{issue.deadline}&lt;\/small&gt;\n        &lt;\/div&gt;\n        &lt;div&gt;\n          &lt;div&gt; className=\"status\"&gt;{issue.status}&lt;\/div&gt;\n        &lt;\/div&gt;\n      &lt;\/div&gt;\n    })}\n    &lt;\/section&gt;\n  &lt;\/div&gt;\n);<\/code><\/pre>\n<ol start=\"2\">\n<li>Para estilizar esse aplicativo, adicione o seguinte c\u00f3digo CSS ao <strong>App.css<\/strong>:<\/li>\n<\/ol>\n<pre><code class=\"language-css\">h1 {\n    text-align: center;\n  font-size: 1.6rem;\n  margin-top: 1rem;\n}\nsection {\n  display: flex;\n  flex-direction: column;\n justify-content: center;\n  align-items: center;\n  margin-top: 2rem;\n }\n\n .issues {\n  display: flex;\n  min-width: 350px;\n  justify-content: space-between;\n  padding: 1rem;\n  background-color: #eee;\n  margin-bottom: 1rem;\n}\n\n small {\n  color: gray;\n}\n\n.status-btn {\n  padding: 4px;\n  border: 1px solid #000;\n  border-radius: 5px;\n}<\/code><\/pre>\n<ol start=\"3\">\n<li>Em seguida, importe <strong>App.css<\/strong> em <strong>index.js<\/strong> para aplicar os estilos:<\/li>\n<\/ol>\n<pre><code class=\"language-javascript\">import '.\/App.css'<\/code><\/pre>\n<p>Agora, quando voc\u00ea iniciar o aplicativo, dever\u00e1 ver uma lista de tarefas atribu\u00eddas a voc\u00ea com o status e o prazo no navegador:<\/p>\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/jira-react-application.png\" alt=\"Lista de problemas do Jira atribu\u00eddos a um usu\u00e1rio.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Lista de problemas do Jira atribu\u00eddos a um usu\u00e1rio.<\/figcaption><\/figure>\n<h2>Implante seu aplicativo React na Kinsta<\/h2>\n<p>Para manter as coisas simples, use a <a href=\"https:\/\/docs.sevalla.com\/templates\/overview#react-with-vite#static-site-hosting\">Hospedagem de Site Est\u00e1tico<\/a> da Kinsta para implantar o aplicativo. A Hospedagem de Site Est\u00e1tico da Kinsta ajuda voc\u00ea a criar seus sites em um site est\u00e1tico e implanta os arquivos est\u00e1ticos, garantindo a entrega r\u00e1pida de conte\u00fado e o m\u00ednimo de tempo de inatividade.<\/p>\n<p>Crie um reposit\u00f3rio no GitHub para <a href=\"https:\/\/kinsta.com\/pt\/blog\/push-codigo-github\/\">enviar seu c\u00f3digo-fonte<\/a>. Quando seu reposit\u00f3rio estiver pronto, siga estas etapas para implantar seu site est\u00e1tico na Kinsta:<\/p>\n<ol start=\"1\">\n<li>Fa\u00e7a login ou crie uma conta para visualizar seu painel MyKinsta.<\/li>\n<li>Autorize a Kinsta com seu provedor Git.<\/li>\n<li>Clique em <strong>Sites est\u00e1ticos<\/strong> na barra lateral esquerda e, em seguida, clique em <strong>Adicionar site<\/strong>.<\/li>\n<li>Selecione o reposit\u00f3rio e a branch a partir da qual voc\u00ea deseja implantar.<\/li>\n<li>Atribua um nome exclusivo ao seu site.<\/li>\n<li>O MyKinsta detecta automaticamente as configura\u00e7\u00f5es de build para esse projeto React. Voc\u00ea ver\u00e1 as seguintes configura\u00e7\u00f5es pr\u00e9-preenchidas:\n<ul>\n<li><strong>Comando build:<\/strong> <code>npm run build<\/code><\/li>\n<li><strong>Vers\u00e3o do node:<\/strong> <code>18.16.0<\/code><\/li>\n<li><strong>Diret\u00f3rio de publica\u00e7\u00e3o:<\/strong> <code>dist<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<ol start=\"7\">\n<li>Adicione a URL do seu servidor como uma vari\u00e1vel de ambiente usando <code>VITE_SERVER_BASE_URL<\/code>.<\/li>\n<li>Por fim, clique em <strong>Criar site<\/strong>.<\/li>\n<\/ol>\n<p>E \u00e9 isso! Agora voc\u00ea tem um site implantado em poucos segundos. Voc\u00ea receber\u00e1 um link para acessar a vers\u00e3o implantada do seu site. Se voc\u00ea navegar at\u00e9 o dom\u00ednio do seu site, ver\u00e1 uma lista de problemas do Jira. Posteriormente, voc\u00ea poder\u00e1 adicionar seu <a href=\"https:\/\/docs.sevalla.com\/applications\/domains\">dom\u00ednio personalizado<\/a> e o <a href=\"https:\/\/docs.sevalla.com\/applications\/domains#install-a-custom-ssl-certificate\">certificado SSL<\/a>, se desejar.<\/p>\n<p>Como alternativa \u00e0 Hospedagem de Site Est\u00e1tico, voc\u00ea pode optar por implantar seu site est\u00e1tico com a <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Hospedagem de Aplicativos<\/a> da Kinsta, que oferece maior flexibilidade de hospedagem, uma gama mais ampla de benef\u00edcios e acesso a recursos mais robustos. Por exemplo, escalabilidade, implanta\u00e7\u00e3o personalizada usando um Dockerfile e <a href=\"https:\/\/docs.sevalla.com\/applications\/analytics\">an\u00e1lises abrangentes<\/a> que englobam dados hist\u00f3ricos e em tempo real.<\/p>\n<h2>Resumo<\/h2>\n<p>Neste guia, voc\u00ea aprendeu a criar um aplicativo Express para recuperar problemas atribu\u00eddos do Jira usando a API REST do Jira. Al\u00e9m disso, voc\u00ea conectou um aplicativo de frontend React ao seu aplicativo Express para exibir esses problemas no navegador.<\/p>\n<p>Esse aplicativo \u00e9 uma demonstra\u00e7\u00e3o rudimentar do que voc\u00ea pode conseguir com a API REST do Jira. Voc\u00ea pode aprimorar seu aplicativo com funcionalidades que permitem marcar tarefas conclu\u00eddas, realizar filtragem avan\u00e7ada e muito mais.<\/p>\n<p>Al\u00e9m disso, com a Kinsta, voc\u00ea pode hospedar seu servidor e o site em um \u00fanico painel usando nossos v\u00e1rios servi\u00e7os. <a href=\"https:\/\/kinsta.com\/pt\/\">Confira a hospedagem web robusta e flex\u00edvel da Kinsta<\/a> para todos os seus aplicativos.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O Jira \u00e9 uma ferramenta popular de gerenciamento de projetos que ajuda voc\u00ea a acompanhar as tarefas de um projeto. No entanto, quando voc\u00ea trabalha em &#8230;<\/p>\n","protected":false},"author":199,"featured_media":65852,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[951,977,992,1002,978],"class_list":["post-65851","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-api","topic-frameworks-javascript","topic-node-js","topic-react","topic-tutoriais-javascript"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Criar uma Lista de Tarefas Hospedada pela Kinsta Usando a API do Jira e React - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Saiba como gerenciar tarefas de forma eficiente com uma lista de tarefas hospedada na Kinsta! Este guia aproveita a API do Jira e o React para criar um aplicativo poderoso!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/pt\/blog\/jira-api\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Criar uma Lista de Tarefas Hospedada pela Kinsta Usando a API do Jira e React\" \/>\n<meta property=\"og:description\" content=\"Saiba como gerenciar tarefas de forma eficiente com uma lista de tarefas hospedada na Kinsta! Este guia aproveita a API do Jira e o React para criar um aplicativo poderoso!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/pt\/blog\/jira-api\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstapt\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-08T11:57:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-18T15:43:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/jira-api.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jeremy Holcombe\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Saiba como gerenciar tarefas de forma eficiente com uma lista de tarefas hospedada na Kinsta! Este guia aproveita a API do Jira e o React para criar um aplicativo poderoso!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/jira-api.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado 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:\/\/kinsta.com\/pt\/blog\/jira-api\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/jira-api\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Criar uma Lista de Tarefas Hospedada pela Kinsta Usando a API do Jira e React\",\"datePublished\":\"2023-12-08T11:57:38+00:00\",\"dateModified\":\"2023-12-18T15:43:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/jira-api\/\"},\"wordCount\":2084,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/jira-api\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/jira-api.jpg\",\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/jira-api\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/jira-api\/\",\"url\":\"https:\/\/kinsta.com\/pt\/blog\/jira-api\/\",\"name\":\"Criar uma Lista de Tarefas Hospedada pela Kinsta Usando a API do Jira e React - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/jira-api\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/jira-api\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/jira-api.jpg\",\"datePublished\":\"2023-12-08T11:57:38+00:00\",\"dateModified\":\"2023-12-18T15:43:07+00:00\",\"description\":\"Saiba como gerenciar tarefas de forma eficiente com uma lista de tarefas hospedada na Kinsta! Este guia aproveita a API do Jira e o React para criar um aplicativo poderoso!\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/jira-api\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/jira-api\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/jira-api\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/jira-api.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/jira-api.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/jira-api\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\",\"item\":\"https:\/\/kinsta.com\/pt\/topicos\/api\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Criar uma Lista de Tarefas Hospedada pela Kinsta Usando a API do Jira e React\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/pt\/#website\",\"url\":\"https:\/\/kinsta.com\/pt\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/pt\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/pt\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstapt\/\",\"https:\/\/x.com\/kinsta_pt\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"caption\":\"Jeremy Holcombe\"},\"description\":\"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeremyholcombe\/\"],\"url\":\"https:\/\/kinsta.com\/pt\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Criar uma Lista de Tarefas Hospedada pela Kinsta Usando a API do Jira e React - Kinsta\u00ae","description":"Saiba como gerenciar tarefas de forma eficiente com uma lista de tarefas hospedada na Kinsta! Este guia aproveita a API do Jira e o React para criar um aplicativo poderoso!","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:\/\/kinsta.com\/pt\/blog\/jira-api\/","og_locale":"pt_PT","og_type":"article","og_title":"Criar uma Lista de Tarefas Hospedada pela Kinsta Usando a API do Jira e React","og_description":"Saiba como gerenciar tarefas de forma eficiente com uma lista de tarefas hospedada na Kinsta! Este guia aproveita a API do Jira e o React para criar um aplicativo poderoso!","og_url":"https:\/\/kinsta.com\/pt\/blog\/jira-api\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstapt\/","article_published_time":"2023-12-08T11:57:38+00:00","article_modified_time":"2023-12-18T15:43:07+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/jira-api.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Saiba como gerenciar tarefas de forma eficiente com uma lista de tarefas hospedada na Kinsta! Este guia aproveita a API do Jira e o React para criar um aplicativo poderoso!","twitter_image":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/jira-api.jpg","twitter_creator":"@kinsta_pt","twitter_site":"@kinsta_pt","twitter_misc":{"Escrito por":"Jeremy Holcombe","Tempo estimado de leitura":"11 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/pt\/blog\/jira-api\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/blog\/jira-api\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Criar uma Lista de Tarefas Hospedada pela Kinsta Usando a API do Jira e React","datePublished":"2023-12-08T11:57:38+00:00","dateModified":"2023-12-18T15:43:07+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/jira-api\/"},"wordCount":2084,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/jira-api\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/jira-api.jpg","inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/pt\/blog\/jira-api\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/pt\/blog\/jira-api\/","url":"https:\/\/kinsta.com\/pt\/blog\/jira-api\/","name":"Criar uma Lista de Tarefas Hospedada pela Kinsta Usando a API do Jira e React - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/jira-api\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/jira-api\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/jira-api.jpg","datePublished":"2023-12-08T11:57:38+00:00","dateModified":"2023-12-18T15:43:07+00:00","description":"Saiba como gerenciar tarefas de forma eficiente com uma lista de tarefas hospedada na Kinsta! Este guia aproveita a API do Jira e o React para criar um aplicativo poderoso!","breadcrumb":{"@id":"https:\/\/kinsta.com\/pt\/blog\/jira-api\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/pt\/blog\/jira-api\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/blog\/jira-api\/#primaryimage","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/jira-api.jpg","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/jira-api.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/pt\/blog\/jira-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/pt\/"},{"@type":"ListItem","position":2,"name":"API","item":"https:\/\/kinsta.com\/pt\/topicos\/api\/"},{"@type":"ListItem","position":3,"name":"Criar uma Lista de Tarefas Hospedada pela Kinsta Usando a API do Jira e React"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/pt\/#website","url":"https:\/\/kinsta.com\/pt\/","name":"Kinsta\u00ae","description":"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura","publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/pt\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstapt\/","https:\/\/x.com\/kinsta_pt","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","caption":"Jeremy Holcombe"},"description":"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.","sameAs":["https:\/\/www.linkedin.com\/in\/jeremyholcombe\/"],"url":"https:\/\/kinsta.com\/pt\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/65851","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/comments?post=65851"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/65851\/revisions"}],"predecessor-version":[{"id":66091,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/65851\/revisions\/66091"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65851\/translations\/en"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65851\/translations\/nl"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65851\/translations\/pt"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65851\/translations\/it"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65851\/translations\/de"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65851\/translations\/fr"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65851\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65851\/translations\/es"},{"href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65851\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media\/65852"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media?parent=65851"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/tags?post=65851"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/topic?post=65851"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}