{"id":75400,"date":"2023-12-08T13:07:37","date_gmt":"2023-12-08T12:07:37","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=75400&#038;preview=true&#038;preview_id=75400"},"modified":"2023-12-18T16:57:34","modified_gmt":"2023-12-18T15:57:34","slug":"api-jira","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/api-jira\/","title":{"rendered":"La guida per creare una to-do list ospitata da Kinsta utilizzando l&#8217;API di Jira e React"},"content":{"rendered":"<p>Jira \u00e8 un popolare strumento di gestione dei progetti che aiuta a tenere traccia delle attivit\u00e0 all&#8217;interno di un progetto. Tuttavia, quando si lavora a un progetto di grandi dimensioni, la dashboard di Jira pu\u00f2 diventare caotica con l&#8217;aumentare del numero di attivit\u00e0 e di membri del team.<\/p>\n<p>Per ovviare a questo problema, si pu\u00f2 utilizzare l&#8217;<a href=\"https:\/\/developer.atlassian.com\/server\/jira\/platform\/rest-apis\/\" target=\"_blank\" rel=\"noopener noreferrer\">API REST di Jira<\/a> per generare un&#8217;applicazione to-do list semplificata che mostra le attivit\u00e0 assegnate e le relative scadenze. L&#8217;API permette di interagire programmaticamente con Jira per creare, recuperare, aggiornare e cancellare issue e accedere ai dati degli utenti e ai dettagli del progetto.<\/p>\n<p>Questo tutorial ci guida nello sviluppo di un&#8217;applicazione to-do list con <a href=\"https:\/\/docs.sevalla.com\/templates\/overview\">Node.js<\/a> come server per recuperare gli issue dall&#8217;account Jira e un&#8217;applicazione React per visualizzarli. Scopriremo anche come ospitare sia il frontend che il server su 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>Prerequisiti<\/h2>\n<p>Per seguire questo tutorial, ci serviranno:<\/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) installati sul computer di sviluppo.<\/li>\n<li>Un <a href=\"https:\/\/www.atlassian.com\/software\/jira\" target=\"_blank\" rel=\"noopener noreferrer\">account Jira<\/a> per accedere alle attivit\u00e0.<\/li>\n<li>Una solida conoscenza di <a href=\"https:\/\/kinsta.com\/it\/blog\/node-js\/\">Node.js<\/a> e <a href=\"https:\/\/kinsta.com\/it\/blog\/react-js\/\">React<\/a>.<\/li>\n<\/ul>\n<h2>Come costruire il backend con Node.js ed Express<\/h2>\n<p><a href=\"https:\/\/kinsta.com\/it\/blog\/cos-e-express-js\/\">Express<\/a> \u00e8 un popolare framework Node.js che fornisce un ambiente semplificato per la creazione di applicazioni lato server. Express semplifica la gestione delle route e facilita le interazioni con risorse esterne, come API, database e applicazioni frontend.<\/p>\n<p>Seguiamo questi passi per configurare il server:<\/p>\n<ol start=\"1\">\n<li>Creiamo una nuova directory e navighiamo al suo interno. Poi, inizializziamo Node.js eseguendo il comando seguente:\n<pre><code class=\"language-bash\">npm init -y<\/code><\/pre>\n<p>Questo comando crea un file <strong>package.json<\/strong> con le impostazioni predefinite nella cartella principale dell&#8217;applicazione.<\/li>\n<li>Successivamente, installiamo tutte le dipendenze necessarie per il progetto eseguendo il comando:\n<pre><code class=\"language-bash\">npm install express dotenv axios<\/code><\/pre>\n<p>Il comando precedente installa i seguenti elementi:<\/p>\n<ul>\n<li><code><a href=\"https:\/\/www.npmjs.com\/package\/express\" target=\"_blank\" rel=\"noopener noreferrer\">express<\/a><\/code>: un framework Node.js di base per la creazione di API.<\/li>\n<li><code><a href=\"https:\/\/www.npmjs.com\/package\/dotenv\" target=\"_blank\" rel=\"noopener noreferrer\">dotenv<\/a><\/code>: un modulo che carica le variabili di <code>.env<\/code> su <code>process.env<\/code> per consentire di accedervi in modo sicuro.<\/li>\n<li><code><a href=\"https:\/\/www.npmjs.com\/package\/axios\" target=\"_blank\" rel=\"noopener noreferrer\">axios<\/a><\/code>: un client HTTP basato su promesse per Node.js. Viene utilizzato per effettuare chiamate API a Jira.<\/li>\n<\/ul>\n<\/li>\n<li>Una volta completata l&#8217;installazione, creiamo un file <strong>.env<\/strong> nella root del progetto e aggiungiamo il numero per <code>PORT<\/code>:\n<pre><code class=\"language-bash\">PORT=3000<\/code><\/pre>\n<p>Questo \u00e8 il numero di porta su cui il server \u00e8 in ascolto, ma \u00e8 possibile cambiarlo con una porta a nostra scelta.<\/li>\n<li>Creiamo un file <strong>index.js<\/strong> nella cartella principale del progetto e aggiungiamo il seguente codice per importare Express, creare un&#8217;istanza di un&#8217;applicazione Express e avviare il server:\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>Infine, nel file <strong>package.json<\/strong>, aggiungiamo uno script per avviare il server:\n<pre><code class=\"language-javascript\">\"scripts\": {\n   \"start\": \"node index\"\n  },<\/code><\/pre>\n<p>Ora possiamo eseguire lo script di avvio nel terminale:<\/p>\n<pre><code class=\"language-bash\">npm run start<\/code><\/pre>\n<p>Questo comando avvia il server. Dovremmo vedere il seguente testo registrato nel terminale:<\/p>\n<pre><code class=\"language-bash\">Server is running on port 3000<\/code><\/pre>\n<p>Con il server attivo e funzionante, possiamo ora configurare l&#8217;applicazione Jira.<\/li>\n<\/ol>\n<h3>Come configurare un&#8217;app Jira<\/h3>\n<p>Per utilizzare l&#8217;API REST di Jira, dobbiamo autenticare un account utente con il sito Jira. L&#8217;API dell&#8217;app to-do che abbiamo creato utilizza l&#8217;autenticazione di base con un indirizzo e-mail e un token API dell&#8217;account Atlassian.<\/p>\n<p>Ecco come configurarla:<\/p>\n<ol start=\"1\">\n<li>Creiamo un <a href=\"https:\/\/www.atlassian.com\/software\/jira\" target=\"_blank\" rel=\"noopener noreferrer\">account Jira<\/a> o accediamo se ne abbiamo gi\u00e0 uno.<\/li>\n<li>Andiamo alla <a href=\"https:\/\/id.atlassian.com\/manage-profile\/security\/api-tokens\" target=\"_blank\" rel=\"noopener noreferrer\">sezione sicurezza<\/a> del profilo Atlassian e clicchiamo su <strong>Crea token API<\/strong>.<\/li>\n<li>Nella finestra di dialogo che appare, inseriamo un&#8217;etichetta per il token (ad esempio, &#8220;jira-todo-list&#8221;) e clicchiamo su <strong>Crea<\/strong>.<\/li>\n<li>Copiamo il token negli appunti.<\/li>\n<li>Infine, memorizziamo il token API nel file <strong>.env<\/strong>:\n<pre><code class=\"bash\">JIRA_API_TOKEN=\"your-api-token\"<\/code><\/pre>\n<p>Ora possiamo accedere all&#8217;API di Jira utilizzando l&#8217;autenticazione di base.<\/li>\n<\/ol>\n<h3>Impostare le route per recuperare gli issue da Jira<\/h3>\n<p>Ora che abbiamo configurato un&#8217;applicazione Jira, passiamo a configurare le route per recuperare gli issue da Jira nel server Node.js.<\/p>\n<p>Per avviare una richiesta all&#8217;API di Jira, dobbiamo utilizzare il token API di Jira che abbiamo salvato nel file <strong>.env<\/strong>. Recuperiamo il token API con <code>process.env<\/code> e assegniamolo a una variabile chiamata <code>JIRA_API_TOKEN<\/code> nel file <strong>index.js<\/strong>:<\/p>\n<pre><code class=\"language-javascript\">const JIRA_API_TOKEN = process.env.JIRA_API_TOKEN<\/code><\/pre>\n<p>Ora dobbiamo definire l&#8217;URL dell&#8217;endpoint per la nostra richiesta API. Questo URL contiene il nostro dominio Jira e una dichiarazione <a href=\"https:\/\/www.atlassian.com\/blog\/jira-software\/jql-the-most-flexible-way-to-search-jira-14\" target=\"_blank\" rel=\"noopener noreferrer\">JQL (Jira Query Language)<\/a>. Il dominio Jira si riferisce all&#8217;URL della nostra organizzazione Jira e assomiglia a <code>org.atlassian.net<\/code>, dove <code>org<\/code> \u00e8 il nome della nostra organizzazione. Il JQL, invece, \u00e8 un linguaggio di interrogazione per interagire con gli issue in Jira.<\/p>\n<p>Iniziamo aggiungendo il dominio Jira al file <strong>.env<\/strong>:<\/p>\n<pre><code class=\"bash\">JIRA_DOMAIN=\"your-jira-domain\"<\/code><\/pre>\n<p>Dobbiamo anche inserire il nostro indirizzo e-mail di Jira nel file <strong>.env<\/strong> perch\u00e9 sar\u00e0 utilizzato per l&#8217;autorizzazione quando faremo una richiesta a Jira:<\/p>\n<pre><code class=\"language-bash\">JIRA_EMAIL=\"your-jira-email\"<\/code><\/pre>\n<p>Quindi, aggiungiamo entrambe le variabili d&#8217;ambiente e costruiamo l&#8217;URL dell&#8217;endpoint utilizzando il dominio e la seguente istruzione JQL. Questa query filtra gli issue con stato &#8220;In corso&#8221; o &#8220;Da fare&#8221; per l&#8217;utente connesso e li ordina in base allo stato:<\/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>Prima di creare una route, importiamo Axios nel file index.js:<\/p>\n<pre><code class=\"language-javascript\">const axios = require(\"axios\")<\/code><\/pre>\n<p>Ora possiamo creare una route che faccia una richiesta GET all&#8217;API di Jira e restituisca gli issue. In <strong>index.js<\/strong> aggiungiamo il seguente codice:<\/p>\n<pre><code class=\"language-javascript\">app.get('\/issues\/all', async (req, res) =&gt; {\n  })<\/code><\/pre>\n<p>Ora utilizziamo il metodo <code>axios.get<\/code> per effettuare una richiesta GET all&#8217;API REST di Jira. Creiamo l&#8217;intestazione <code>Authorization<\/code> codificando in base64 l&#8217;email e il token API di Jira:<\/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>Attendiamo la risposta dell&#8217;API di Jira e salviamola in una variabile. La risposta contiene una propriet\u00e0 chiamata <code>issues<\/code>, che contiene un array di oggetti issue:<\/p>\n<pre><code class=\"language-javascript\">const data = await response.json();\nconst { issues } = data;<\/code><\/pre>\n<p>Quindi, iteriamo sull&#8217;array <code>issues<\/code>, estraiamo solo le informazioni rilevanti sulle cose da fare e le restituiamo nella risposta 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>Facendo una richiesta a <code>http:\/\/localhost:3000\/issues\/all<\/code>, dovremmo ricevere un oggetto JSON contenente gli issue:<\/p>\n<pre><code class=\"language-bash\">curl localhost:3000\/issues\/all<\/code><\/pre>\n<p>Possiamo anche andare oltre, utilizzando un provider come SendGrid e un cron job per inviare email giornaliere contenenti i compiti assegnati.<\/p>\n<h3>Ospitare l&#8217;applicazione Node.js su Kinsta<\/h3>\n<p>Prima di ospitare la nostra applicazione su Kinsta, abilitiamo il <a href=\"https:\/\/kinsta.com\/it\/blog\/librerie-node-js\/#2-cors\">Cross-Origin Resource Sharing (CORS)<\/a> per evitare che si verifichi un errore <code>access-control-allow-origin<\/code> poich\u00e9 il backend e il frontend sono ospitati su domini diversi. Per farlo:<\/p>\n<ol start=\"1\">\n<li>Installiamo il <a href=\"https:\/\/www.npmjs.com\/package\/cors\" target=\"_blank\" rel=\"noopener noreferrer\">pacchetto cors npm<\/a> eseguendo questo comando nel terminale:\n<pre><code class=\"language-bash\">npm install cors<\/code><\/pre>\n<\/li>\n<li>Quindi, importiamo il pacchetto in <strong>index.js<\/strong>.\n<pre><code class=\"language-javascript\">const cors = require('cors')<\/code><\/pre>\n<\/li>\n<li>Poi, configuriamo CORS come middleware per attivarlo per ogni richiesta in arrivo. Aggiungiamo il seguente codice all&#8217;inizio del file <strong>index.js<\/strong>:\n<pre><code class=\"language-javascript\">app.use(cors());<\/code><\/pre>\n<p>Ora possiamo inviare richieste HTTP al server da un dominio diverso senza incorrere in errori CORS.<\/li>\n<\/ol>\n<p>Successivamente, inviamo il codice al nostro provider Git preferito (<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> o <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/gitlab#authorize-the-kinsta-gitlab-application\">GitLab<\/a>) e seguiamo i passaggi qui sotto per ospitarlo:<\/p>\n<ol start=\"1\">\n<li>Accediamo o creiamo un account per visualizzare la nostra dashboard <a href=\"https:\/\/my.kinsta.com\/?lang=it\" target=\"_blank\" rel=\"noopener noreferrer\">MyKinsta<\/a>.<\/li>\n<li>Autorizziamo Kinsta con il nostro provider Git.<\/li>\n<li>Clicchiamo su <strong>Applicazioni<\/strong> nella barra laterale di sinistra e poi su <strong>Aggiungi applicazione<\/strong>.<\/li>\n<li>Selezioniamo il repository e il branch da cui desideriamo effettuare il deploy.<\/li>\n<li>Assegniamo un nome unico alla nostra applicazione e scegliamo la <strong>posizione<\/strong> del <strong>data center<\/strong>.<\/li>\n<li>Aggiungiamo le variabili d&#8217;ambiente. Non \u00e8 necessario aggiungere PORT come variabile d&#8217;ambiente, perch\u00e9 Kinsta la gestisce automaticamente. Spuntiamo le caselle accanto a <strong>Disponibile durante il runtime<\/strong> e <strong>Disponibile durante il processo di build<\/strong>:\n<p><figure id=\"attachment_105526\" aria-describedby=\"caption-attachment-105526\" 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=\"Un modulo per aggiungere coppie chiave-valore di variabili d'ambiente\" width=\"1001\" height=\"471\"><figcaption id=\"caption-attachment-105526\" class=\"wp-caption-text\">Variabili d&#8217;ambiente dell&#8217;applicazione Kinsta.<\/figcaption><\/figure><\/li>\n<li>Controlliamo le altre informazioni (possiamo lasciare i valori predefiniti) e clicchiamo su <strong>Crea applicazione<\/strong>.<\/li>\n<\/ol>\n<p>Il nostro server \u00e8 ora distribuito con successo su Kinsta. Nel menu di sinistra, clicchiamo su <strong>Domini<\/strong> e copiamo il dominio primario. Questo \u00e8 l&#8217;endpoint URL del nostro server.<\/p>\n<h2>Creare un&#8217;applicazione React per visualizzare gli issue<\/h2>\n<p>Successivamente, utilizzeremo React per creare il frontend dell&#8217;applicazione e il CSS per crearne lo stile. Usiamo i passi seguenti per creare un progetto React con <a href=\"https:\/\/docs.sevalla.com\/templates\/overview#react-with-vite\">Vite<\/a>:<\/p>\n<ol start=\"1\">\n<li>Creiamo un nuovo progetto React chiamato <code>jira-todo<\/code>:\n<pre><code class=\"language-bash\">npx create-vite jira-todo --template react<\/code><\/pre>\n<\/li>\n<li>Navighiamo nella directory del progetto e installiamo le dipendenze necessarie:\n<pre><code class=\"language-bash\">npm install<\/code><\/pre>\n<\/li>\n<li>Avviamo il server di sviluppo:\n<pre><code class=\"language-bash\">npm run dev<\/code><\/pre>\n<\/li>\n<\/ol>\n<h3>Recuperiamo gli issue dal server<\/h3>\n<ol start=\"1\">\n<li>Cancelliamo il contenuto di <strong>App.jsx<\/strong> e aggiungiamo il seguente codice:<\/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>Prima di iniziare a recuperare gli issue, memorizziamo l&#8217;URL del server di Kinsta in un file <strong>.env<\/strong> nella cartella principale dell&#8217;applicazione:<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">VITE_SERVER_BASE_URL=\"your-hosted-url\"<\/code><\/pre>\n<ol start=\"3\">\n<li>Ottieniamo l&#8217;URL in <strong>App.jsx<\/strong> aggiungendo la seguente riga all&#8217;inizio del file:<\/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>Nel nostro componente, creiamo una funzione async denominata <code>fetchData<\/code> ed effettuiamo una richiesta GET all&#8217;endpoint <code>\/issues\/all<\/code> sul server Express. Una volta ricevuta la risposta, effettuiamone il parsing come JSON e memorizziamone i dati in un valore di stato chiamato <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        setData(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>Notete che utilizziamo l&#8217;hook <code>useEffect<\/code> per eseguire la funzione <code>fetchData<\/code> quando il componente viene montato.<\/p>\n<h3>Visualizzare gli issue da Jira nel browser<\/h3>\n<ol start=\"1\">\n<li>Ora possiamo modificare la dichiarazione di ritorno del componente per iterare gli issue ed elencarli nel browser:<\/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        {data && data.map(issue =&gt; {\n        return &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>Per creare lo stile di questa applicazione, aggiungiamo il seguente codice CSS a <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>Quindi, importiamo <strong>App.css<\/strong> in <strong>index.js<\/strong> per applicare gli stili:<\/li>\n<\/ol>\n<pre><code class=\"language-javascript\">import '.\/App.css'<\/code><\/pre>\n<p>Ora, quando avviamo l&#8217;applicazione, dovremmo vedere nel browser l&#8217;elenco dei compiti che ci sono stati assegnati con il loro stato e la loro scadenza:<\/p>\n<figure id=\"attachment_105526\" aria-describedby=\"caption-attachment-105526\" 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=\"Uno screenshot della pagina dell'applicazione React\" width=\"1001\" height=\"471\"><figcaption id=\"caption-attachment-105526\" class=\"wp-caption-text\">Elenco degli issue Jira assegnati a un utente.<\/figcaption><\/figure>\n<h2>Distribuire un&#8217;applicazione React su Kinsta<\/h2>\n<p>Per non complicarci troppo la vita, useremo l&#8217;<a href=\"https:\/\/docs.sevalla.com\/templates\/overview#react-with-vite#static-site-hosting\">Hosting di Siti Statici<\/a> di Kinsta per distribuire l&#8217;applicazione. L&#8217;Hosting di Siti Statici di Kinsta aiuta a creare un sito statico e a distribuire i file statici per garantire una distribuzione rapida dei contenuti e tempi di inattivit\u00e0 minimi.<\/p>\n<p>Creiamo un repository su GitHub per <a href=\"https:\/\/kinsta.com\/it\/blog\/come-inviare-codice-github\/\">distribuire il nostro codice sorgente<\/a>. Quando il repository sar\u00e0 pronto, baster\u00e0 seguire questi passaggi per distribuire il nostro sito statico su Kinsta:<\/p>\n<ol start=\"1\">\n<li>Accediamo o creiamo un account per visualizzare la dashboard MyKinsta.<\/li>\n<li>Autorizziamo Kinsta con il nostro provider Git.<\/li>\n<li>Clicchiamo su <strong>Siti statici<\/strong> nella barra laterale di sinistra e poi su <strong>Aggiungi sito<\/strong>.<\/li>\n<li>Selezioniamo il repository e il branch da cui desideriamo effettuare il deploy.<\/li>\n<li>Assegniamo un nome unico al sito.<\/li>\n<li>MyKinsta rileva automaticamente le impostazioni di build per questo progetto React. Vedramo le seguenti impostazioni precompilate:\n<ul>\n<li><strong>Comando di build:<\/strong> <code>npm run build<\/code><\/li>\n<li><strong>Versione Node:<\/strong> <code>18.16.0<\/code><\/li>\n<li><strong>Directory di pubblicazione:<\/strong> <code>dist<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<ol start=\"7\">\n<li>Aggiungiamo l&#8217;URL del server come variabile d&#8217;ambiente usando <code>VITE_SERVER_BASE_URL<\/code>.<\/li>\n<li>Infine, clicchiamo su <strong>Crea sito<\/strong>.<\/li>\n<\/ol>\n<p>E il gioco \u00e8 fatto! In pochi secondi avremo un sito distribuito e un link per accedere alla versione distribuita del sito. Se navighiamo sul dominio del sito, vedremo un elenco di issue di Jira. Per chi lo desidera, \u00e8 possibile aggiungere un <a href=\"https:\/\/docs.sevalla.com\/applications\/domains\">dominio personalizzato<\/a> e un <a href=\"https:\/\/docs.sevalla.com\/applications\/domains#install-a-custom-ssl-certificate\">certificato SSL<\/a>.<\/p>\n<p>In alternativa all&#8217;hosting statico, possiamo scegliere di distribuire il nostro sito statico con l&#8217;<a href=\"https:\/\/sevalla.com\/application-hosting\/\">Hosting di Applicazioni<\/a> di Kinsta, che offre una maggiore flessibilit\u00e0 di hosting, una gamma pi\u00f9 ampia di vantaggi e l&#8217;accesso a funzioni pi\u00f9 robuste. Tra queste, la scalabilit\u00e0, la distribuzione personalizzata tramite un Dockerfile e l&#8217;<a href=\"https:\/\/docs.sevalla.com\/applications\/analytics\">analisi completa<\/a> dei dati storici e in tempo reale.<\/p>\n<h2>Riepilogo<\/h2>\n<p>In questa guida abbiamo imparato a creare un&#8217;applicazione Express per recuperare gli issue Jira assegnati utilizzando l&#8217;API REST di Jira. Inoltre, abbiamo collegato un&#8217;applicazione frontend React alla nostra applicazione Express per visualizzare questi issue nel browser.<\/p>\n<p>Questa applicazione \u00e8 una dimostrazione rudimentale di ci\u00f2 che si pu\u00f2 ottenere con Jira REST API. \u00c8 possibile migliorare l&#8217;applicazione con funzionalit\u00e0 che permettono di contrassegnare le attivit\u00e0 completate, eseguire filtri avanzati e molto altro ancora.<\/p>\n<p>Inoltre, con Kinsta si possono ospitare sia il server che il sito in un&#8217;unica dashboard utilizzando i nostri servizi. Date un&#8217;occhiata al web hosting di <a href=\"https:\/\/kinsta.com\/it\/\">Kinsta<\/a>, solido e flessibile per tutte le vostre applicazioni.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jira \u00e8 un popolare strumento di gestione dei progetti che aiuta a tenere traccia delle attivit\u00e0 all&#8217;interno di un progetto. Tuttavia, quando si lavora a un &#8230;<\/p>\n","protected":false},"author":199,"featured_media":75401,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[26232,25918,26203,26212,25847],"class_list":["post-75400","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-api","topic-framework-javascript","topic-node-js","topic-react","topic-tutorial-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>La guida per creare una to-do list ospitata da Kinsta utilizzando l&#039;API di Jira e React- Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Gestisci in modo pi\u00f9 efficiente le attivit\u00e0 con una to-do list ospitata da Kinsta! Questa guida sfrutta le API di Jira e React per costruire un&#039;applicazione super!\" \/>\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\/it\/blog\/api-jira\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"La guida per creare una to-do list ospitata da Kinsta utilizzando l&#039;API di Jira e React\" \/>\n<meta property=\"og:description\" content=\"Gestisci in modo pi\u00f9 efficiente le attivit\u00e0 con una to-do list ospitata da Kinsta! Questa guida sfrutta le API di Jira e React per costruire un&#039;applicazione super!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/api-jira\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-08T12:07:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-18T15:57:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/jira-api-1.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=\"Gestisci in modo pi\u00f9 efficiente le attivit\u00e0 con una to-do list ospitata da Kinsta! Questa guida sfrutta le API di Jira e React per costruire un&#039;applicazione super!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/jira-api-1.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-jira\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-jira\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"La guida per creare una to-do list ospitata da Kinsta utilizzando l&#8217;API di Jira e React\",\"datePublished\":\"2023-12-08T12:07:37+00:00\",\"dateModified\":\"2023-12-18T15:57:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-jira\/\"},\"wordCount\":1825,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-jira\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/jira-api-1.jpg\",\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/api-jira\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-jira\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/api-jira\/\",\"name\":\"La guida per creare una to-do list ospitata da Kinsta utilizzando l'API di Jira e React- Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-jira\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-jira\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/jira-api-1.jpg\",\"datePublished\":\"2023-12-08T12:07:37+00:00\",\"dateModified\":\"2023-12-18T15:57:34+00:00\",\"description\":\"Gestisci in modo pi\u00f9 efficiente le attivit\u00e0 con una to-do list ospitata da Kinsta! Questa guida sfrutta le API di Jira e React per costruire un'applicazione super!\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-jira\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/api-jira\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-jira\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/jira-api-1.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/jira-api-1.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-jira\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/api\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"La guida per creare una to-do list ospitata da Kinsta utilizzando l&#8217;API di Jira e React\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"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\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/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\/it\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"La guida per creare una to-do list ospitata da Kinsta utilizzando l'API di Jira e React- Kinsta\u00ae","description":"Gestisci in modo pi\u00f9 efficiente le attivit\u00e0 con una to-do list ospitata da Kinsta! Questa guida sfrutta le API di Jira e React per costruire un'applicazione super!","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\/it\/blog\/api-jira\/","og_locale":"it_IT","og_type":"article","og_title":"La guida per creare una to-do list ospitata da Kinsta utilizzando l'API di Jira e React","og_description":"Gestisci in modo pi\u00f9 efficiente le attivit\u00e0 con una to-do list ospitata da Kinsta! Questa guida sfrutta le API di Jira e React per costruire un'applicazione super!","og_url":"https:\/\/kinsta.com\/it\/blog\/api-jira\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2023-12-08T12:07:37+00:00","article_modified_time":"2023-12-18T15:57:34+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/jira-api-1.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Gestisci in modo pi\u00f9 efficiente le attivit\u00e0 con una to-do list ospitata da Kinsta! Questa guida sfrutta le API di Jira e React per costruire un'applicazione super!","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/jira-api-1.jpg","twitter_creator":"@Kinsta_IT","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Jeremy Holcombe","Tempo di lettura stimato":"10 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/api-jira\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/api-jira\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"La guida per creare una to-do list ospitata da Kinsta utilizzando l&#8217;API di Jira e React","datePublished":"2023-12-08T12:07:37+00:00","dateModified":"2023-12-18T15:57:34+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/api-jira\/"},"wordCount":1825,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/api-jira\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/jira-api-1.jpg","inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/api-jira\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/api-jira\/","url":"https:\/\/kinsta.com\/it\/blog\/api-jira\/","name":"La guida per creare una to-do list ospitata da Kinsta utilizzando l'API di Jira e React- Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/api-jira\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/api-jira\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/jira-api-1.jpg","datePublished":"2023-12-08T12:07:37+00:00","dateModified":"2023-12-18T15:57:34+00:00","description":"Gestisci in modo pi\u00f9 efficiente le attivit\u00e0 con una to-do list ospitata da Kinsta! Questa guida sfrutta le API di Jira e React per costruire un'applicazione super!","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/api-jira\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/api-jira\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/api-jira\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/jira-api-1.jpg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/jira-api-1.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/api-jira\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"API","item":"https:\/\/kinsta.com\/it\/argomenti\/api\/"},{"@type":"ListItem","position":3,"name":"La guida per creare una to-do list ospitata da Kinsta utilizzando l&#8217;API di Jira e React"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","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\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/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\/it\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/75400","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=75400"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/75400\/revisions"}],"predecessor-version":[{"id":75606,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/75400\/revisions\/75606"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75400\/translations\/en"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75400\/translations\/nl"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75400\/translations\/pt"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75400\/translations\/it"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75400\/translations\/de"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75400\/translations\/fr"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75400\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75400\/translations\/es"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75400\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/75401"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=75400"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=75400"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=75400"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}