{"id":69167,"date":"2023-05-19T12:22:01","date_gmt":"2023-05-19T11:22:01","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=69167&#038;preview=true&#038;preview_id=69167"},"modified":"2023-05-24T08:08:02","modified_gmt":"2023-05-24T07:08:02","slug":"api-laravel","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/api-laravel\/","title":{"rendered":"API in Laravel: Creare e Testare un&#8217;API in Laravel"},"content":{"rendered":"<p>Laravel <a href=\"https:\/\/laravel.com\/docs\/9.x\/eloquent\" target=\"_blank\" rel=\"noopener noreferrer\">Eloquent<\/a> \u00e8 uno strumento semplice per interagire con un database. \u00c8 un object-relational mapper (ORM) che semplifica la complessit\u00e0 dei database offrendo un modello per interagire con le tabelle.<\/p>\n<p>Per questo motivo, Laravel Eloquent dispone di strumenti eccellenti per creare e testare le API a supporto dello sviluppo. In questo articolo tutorial, vedremo come \u00e8 facile creare e testare le API con Laravel.<\/p>\n<p>In questa dimostrazione, inizieremo con la creazione di un modello da usare per costruire l&#8217;<a href=\"https:\/\/kinsta.com\/it\/blog\/api-endpoint\/\">API<\/a> e la tabella del database. Poi vedremo come aggiungere un controller come livello di logica aziendale e una route per completare l&#8217;API. Impareremo poi a testare le API con Postman prima di concentrarci sull&#8217;autenticazione e sulla gestione degli errori.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Prerequisiti<\/h2>\n<p>Ecco cosa serve per iniziare:<\/p>\n<ul>\n<li><a href=\"https:\/\/laravel.com\/docs\/9.x\/installation\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel versione 8 o 9<\/a><\/li>\n<li><a href=\"https:\/\/getcomposer.org\/download\/\" target=\"_blank\" rel=\"noopener noreferrer\">Composer<\/a><\/li>\n<li><a href=\"https:\/\/www.postman.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Postman<\/a><\/li>\n<li><a href=\"https:\/\/www.apachefriends.org\/download.html\" target=\"_blank\" rel=\"noopener noreferrer\">XAMPP<\/a><\/li>\n<li>Conoscenza di base delle API e di <a href=\"https:\/\/kinsta.com\/php\/\">PHP<\/a><\/li>\n<\/ul>\n<h2>Nozioni di base sulle API<\/h2>\n<p>Iniziate creando un nuovo progetto Laravel con <code>composer<\/code>:<\/p>\n<pre><code class=\"language-bash\">composer create-project laravel\/laravel laravel-api-create-test<\/code><\/pre>\n<p>Per avviare il server, lanciate il seguente comando, che esegue l&#8217;application server sulla porta 8000:<\/p>\n<pre><code class=\"language-bash\">cd laravel-api-create-test\nphp artisan serve<\/code><\/pre>\n<p>Dovreste vedere la seguente schermata:<\/p>\n<figure style=\"width: 1250px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/laravel-landing-page.png\" alt=\"Schermata iniziale di Laravel\" width=\"1250\" height=\"679\"><figcaption class=\"wp-caption-text\">Laravel<\/figcaption><\/figure>\n<p>Quindi, create un modello con un flag <code>-m<\/code> per la migrazione utilizzando il codice seguente:<\/p>\n<pre><code class=\"language-bash\">php artisan make:model Product -m<\/code><\/pre>\n<p>Ora aggiornate il file di migrazione per includere il campo richiesto. Aggiungete i campi titolo e descrizione per il modello del prodotto e questi due campi della tabella all&#8217;interno del file <strong>database\/migrations\/{date_stamp}_create_products_table.php<\/strong>.<\/p>\n<pre><code class=\"language-php\">$table-&gt;string('title');\n$table-&gt;longText('description');<\/code><\/pre>\n<p>Il passo successivo \u00e8 rendere questi campi compilabili. All&#8217;interno di <strong>app\/Models\/Product<\/strong><strong>.php<\/strong>, rendete compilabili i campi <code>title<\/code> e <code>description<\/code>.<\/p>\n<pre><code class=\"language-php\">protected $fillable = ['title', 'description'];<\/code><\/pre>\n\n<h2>Come creare un controller<\/h2>\n<p>Ora create un file controller per il prodotto eseguendo il seguente comando. In questo modo verr\u00e0 creato il file <strong>app\/Http\/Controllers\/Api\/ProductController.php<\/strong>.<\/p>\n<pre><code class=\"language-bash\">php artisan make:controller ApiProductController --model=Product<\/code><\/pre>\n<p>Ora, aggiungete la logica per creare e recuperare i prodotti. All&#8217;interno del metodo <code>index<\/code>, aggiungete il seguente codice per recuperare tutti i prodotti:<\/p>\n<pre><code class=\"language-php\">$products = Product::all();\nreturn response()-&gt;json([\n\t'status' =&gt; true,\n\t'products' =&gt; $products\n]);<\/code><\/pre>\n<p>Poi dovete aggiungere una classe <code>StoreProductRequest<\/code> per memorizzare i nuovi prodotti nel database. Aggiungete la seguente classe all&#8217;inizio dello stesso file.<\/p>\n<pre><code class=\"language-php\">public function store(StoreProductRequest $request)\n {\n\t$product = Product::create($request-&gt;all());\n\n\treturn response()-&gt;json([\n    \t'status' =&gt; true,\n    \t'message' =&gt; \"Product Created successfully!\",\n    \t'product' =&gt; $product\n\t], 200);\n }<\/code><\/pre>\n<p>Ora dovrete creare la richiesta eseguendo questo comando:<\/p>\n<pre><code class=\"language-bash\">php artisan make:request StoreProductRequest<\/code><\/pre>\n<p>Se volete aggiungere delle convalide, potete usare il file <strong>app\/Http\/Requests\/StoreProductRequest.php<\/strong>. Per questa dimostrazione non ci sono convalide.<\/p>\n<h2>Come creare una route<\/h2>\n<p>L&#8217;ultimo passo da fare prima di testare l&#8217;API \u00e8 aggiungere una route. Per farlo, aggiungete il seguente codice all&#8217;interno del file <strong>routes\/api.php<\/strong>. Aggiungete l&#8217;istruzione <code>use<\/code> all&#8217;inizio del file e l&#8217;istruzione <code>Route<\/code> nel corpo:<\/p>\n<pre><code class=\"language-php\">use AppHttpControllersApiProductController;\nRoute::apiResource('products', ProductController::class);<\/code><\/pre>\n<p>Prima di iniziare a testare l&#8217;API, verificate che la tabella dei<strong> prodotti<\/strong> sia presente nel vostro database. Se non esiste, createla usando un pannello di controllo come XAMPP. In alternativa, potete eseguire il comando qui sotto per migrare il database:<\/p>\n<pre><code class=\"language-bash\">php artisan migrate<\/code><\/pre>\n<h2>Come testare un&#8217;API<\/h2>\n<p>Prima di testare l&#8217;API, assicuratevi che il metodo <code>authorize<\/code> all&#8217;interno dell&#8217;<strong>app\/Http\/Requests\/StoreProductRequest.php<\/strong> sia impostato per restituire <code>true<\/code>.<\/p>\n<p>Ora potete creare un nuovo prodotto utilizzando Postman. Iniziate con una richiesta <code>POST<\/code> a questo URL: <a href=\"http:\/\/127.0.0.1:8000\/api\/products\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/127.0.0.1:8000\/api\/products\/<\/a>. Poich\u00e9 si tratta di una richiesta <code>POST<\/code> per creare un nuovo prodotto, dovete passare un oggetto JSON con un titolo e una descrizione.<\/p>\n<pre><code class=\"language-php\">{\n\t\"title\":\"Apple\",\n\t\"description\":\"Best Apples of the world\"\n}<\/code><\/pre>\n<figure style=\"width: 680px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/create-product-postman.png\" alt=\"Schermata di Postman con la schermata per creare un nuovo prodotto\" width=\"680\" height=\"287\"><figcaption class=\"wp-caption-text\">Creare un nuovo prodotto in Postman<\/figcaption><\/figure>\n<p>Dopo aver fatto clic sul pulsante <strong>Send<\/strong>, dovreste vedere quanto segue:<\/p>\n<figure style=\"width: 572px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/postman-code.png\" alt=\"Schermata di Postman con l\u2019output dopo aver fatto clic su Send\" width=\"572\" height=\"326\"><figcaption class=\"wp-caption-text\">Dopo aver fatto clic su Send<\/figcaption><\/figure>\n<p>Ora recuperate i prodotti creati utilizzando la richiesta <code>GET<\/code>. L&#8217;<a href=\"https:\/\/kinsta.com\/it\/blog\/cosa-e-un-url\/\">URL<\/a> \u00e8 lo stesso. I risultati saranno i seguenti:<\/p>\n<figure style=\"width: 792px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/get-code-products-fetched.png\" alt=\"Schermata di Postman con i prodotti recuperati con la richiesta GET.\" width=\"792\" height=\"860\"><figcaption class=\"wp-caption-text\">I prodotti recuperati con la richiesta GET.<\/figcaption><\/figure>\n<h2>Come autenticare un&#8217;API con Sanctum<\/h2>\n<p>L&#8217;autenticazione \u00e8 fondamentale per proteggere un&#8217;API. Laravel la semplifica fornendo la funzionalit\u00e0 del token Sanctum, che potete usare come middleware. L&#8217;API \u00e8 protetta da token generati quando l&#8217;utente accede utilizzando le credenziali corrette. Ricordate che gli utenti non possono accedere all&#8217;API protetta senza un token.<\/p>\n<p>Il primo passo per aggiungere l&#8217;autenticazione \u00e8 aggiungere un pacchetto Sanctum con il codice sottostante:<\/p>\n<pre><code class=\"language-bash\">composer require laravel\/sanctum<\/code><\/pre>\n<p>Quindi pubblicate il file di configurazione di Sanctum:<\/p>\n<pre><code class=\"language-bash\">php artisan vendor:publish --provider=\"LaravelSanctumSanctumServiceProvider\"<\/code><\/pre>\n<p>Successivamente, aggiungete il token di Sanctum come middleware. All&#8217;interno del file <strong>app\/Http\/Kernel.php<\/strong>, usate la seguente classe e sostituite <code>middlewareGroups<\/code> con il seguente codice nelle API protette dei gruppi middleware.<\/p>\n<pre><code class=\"language-php\">use LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful;<\/code><\/pre>\n<pre><code class=\"language-php\">protected $middlewareGroups = [\n\t'web' =&gt; [\n    \tAppHttpMiddlewareEncryptCookies::class,\n    \tIlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,\n    \tIlluminateSessionMiddlewareStartSession::class,\n    \t\/\/ IlluminateSessionMiddlewareAuthenticateSession::class,\n    \tIlluminateViewMiddlewareShareErrorsFromSession::class,\n    \tAppHttpMiddlewareVerifyCsrfToken::class,\n    \tIlluminateRoutingMiddlewareSubstituteBindings::class,\n\t],\n\n\t'api' =&gt; [\n    \tEnsureFrontendRequestsAreStateful::class,\n    \t'throttle:api',\n    \tIlluminateRoutingMiddlewareSubstituteBindings::class,\n\t],\n];<\/code><\/pre>\n<p>Il passo successivo \u00e8 creare un <code>UserController<\/code> e aggiungere il codice per ottenere il token di autenticazione.<\/p>\n<pre><code class=\"language-bash\">php artisan make:controller UserController<\/code><\/pre>\n<p>Dopo aver creato <code>UserController<\/code>, andate al file <strong>app\/Http\/Controllers\/UserController.php<\/strong> e sostituite il codice esistente con il seguente:<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppHttpControllers;\n\nuse IlluminateHttpRequest;\nuse AppModelsUser;\nuse IlluminateSupportFacadesHash;\nclass UserController extends Controller\n{\n\t\/\/\n\n\tfunction index(Request $request)\n\t{\n    \t$user= User::where('email', $request-&gt;email)-&gt;first();\n    \t\/\/ print_r($data);\n        \tif (!$user || !Hash::check($request-&gt;password, $user-&gt;password)) {\n            \treturn response([\n                \t'message' =&gt; ['These credentials do not match our records.']\n            \t], 404);\n        \t}\n   \t \n         \t$token = $user-&gt;createToken('my-app-token')-&gt;plainTextToken;\n   \t \n        \t$response = [\n            \t'user' =&gt; $user,\n            \t'token' =&gt; $token\n        \t];\n   \t \n         \treturn response($response, 201);\n\t}\n}<\/code><\/pre>\n<p>Prima di testare l&#8217;autenticazione, create un utente che impiega i seeders. Il comando seguente crea un file <strong>UsersTableSeeder<\/strong>.<\/p>\n<pre><code class=\"language-bash\">php artisan make:seeder UsersTableSeeder<\/code><\/pre>\n<p>All&#8217;interno del file <strong>database\/seeders\/UsersTableSeeder.php<\/strong>, sostituite il codice esistente con il seguente per creare l&#8217;utente:<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace DatabaseSeeders;\n\nuse IlluminateDatabaseSeeder;\nuse IlluminateSupportFacadesDB;\nuse IlluminateSupportFacadesHash;\n\nclass UsersTableSeeder extends Seeder\n{\n\t\/**\n \t* Run the database seeds.\n \t*\n \t* @return void\n \t*\/\n\tpublic function run()\n\t{\n    \tDB::table('users')-&gt;insert([\n        \t'name' =&gt; 'John Doe',\n        \t'email' =&gt; 'john@doe.com',\n        \t'password' =&gt; Hash::make('password')\n    \t]);\n\t}\n}<\/code><\/pre>\n<p>Ora eseguite il seeder utilizzando questo comando:<\/p>\n<pre><code class=\"language-bash\">php artisan db:seed --class=UsersTableSeeder<\/code><\/pre>\n<p>L&#8217;ultimo passo rimasto nel flusso di autenticazione \u00e8 quello di usare il middleware creato per proteggere il percorso. Andate al file <strong>routes\/api.php<\/strong> e aggiungete la route products all&#8217;interno del middleware.<\/p>\n<pre><code class=\"language-php\">use AppHttpControllersUserController;\n\nRoute::group(['middleware' =&gt; 'auth:sanctum'], function () {\n\tRoute::apiResource('products', ProductController::class);\n});\n\nRoute::post(\"login\",[UserController::class,'index']);<\/code><\/pre>\n<p>Dopo aver aggiunto una route al middleware, otterrete un errore interno del server se cercate di recuperare i prodotti.<\/p>\n<figure style=\"width: 1044px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/internal-server-error.png\" alt=\"Schermata di Postman con un messaggio di internal server error dopo aver aggiunto una route\" width=\"1044\" height=\"644\"><figcaption class=\"wp-caption-text\">Un errore interno del server dopo aver aggiunto una route<\/figcaption><\/figure>\n<p>Ma una volta che avrete fatto la connessione, ottenuto un token da usare nell\u2019header, il sistema vi autenticher\u00e0 e inizier\u00e0 a funzionare. Potete inviare una richiesta POST a <a href=\"http:\/\/127.0.0.1:8000\/api\/login\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/127.0.0.1:8000\/api\/login<\/a> con il seguente corpo:<\/p>\n<pre><code class=\"language-php\">{\n\t\"email\":\"john@doe.com\",\n\t\"password\":\"password\"\n}<\/code><\/pre>\n<figure style=\"width: 574px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/authentication-bearer-token.png\" alt=\"Schermata di Postman con l\u2019output di avvenuta autenticazione e il token Bearer\" width=\"574\" height=\"675\"><figcaption class=\"wp-caption-text\">Autenticazione riuscita<\/figcaption><\/figure>\n<p>Usate il token ricevuto come token Bearer e aggiungetelo all\u2019header Authorization.<\/p>\n<figure style=\"width: 941px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/add-bearer-token.png\" alt=\"Schermata di Postman con i comandi per aggiungere il token Bearer come header Authorization\" width=\"941\" height=\"858\"><figcaption class=\"wp-caption-text\">Aggiungere il token Bearer come header Authorization<\/figcaption><\/figure>\n<h2>Come gestire gli errori API<\/h2>\n<p>Ogni volta che inviate una richiesta al server, questo risponde. Con la risposta, invia anche un <a href=\"https:\/\/kinsta.com\/it\/blog\/codici-di-stato-http\/\">codice di stato<\/a> in base alla natura della risposta. Per esempio, un codice di stato 200 indica che la richiesta \u00e8 andata a buon fine, mentre un <a href=\"https:\/\/kinsta.com\/it\/blog\/errore-404-not-found\/\">404<\/a> indica che il server non riesce a trovare la risorsa richiesta.<\/p>\n<p>Tuttavia, un codice di stato non \u00e8 sufficiente. \u00c8 necessario un messaggio di errore leggibile dall\u2019occhio umano. Laravel offre molti modi per gestire gli errori. Potete usare un blocco try-catch, il metodo fallback o inviare una risposta personalizzata. Il seguente codice aggiunto a <code>UserController<\/code> ne \u00e8 la dimostrazione.<\/p>\n<pre><code class=\"language-php\">if (!$user || !Hash::check($request-&gt;password, $user-&gt;password)) {\n\treturn response([\n    \t'message' =&gt; ['These credentials do not match our records.']\n\t], 404);\n}<\/code><\/pre>\n\n<h2>Riepilogo<\/h2>\n<p>L&#8217;Eloquent Model di Laravel facilita la creazione, validazione e test delle API. La sua mappatura oggetto-relazionale fornisce un approccio semplice all&#8217;interazione con il database.<\/p>\n<p>Inoltre, agendo come middleware, il token Sanctum di Laravel pu\u00f2 aiutarvi a proteggere rapidamente le vostre API.<\/p>\n<p>E se avete bisogno di un&#8217;ulteriore ottimizzazione, la soluzione <a href=\"https:\/\/sevalla.com\/database-hosting\/\">Hosting di Database<\/a> di Kinsta semplifica l&#8217;impostazione e la gestione dei database per tutti i vostri progetti web.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Laravel Eloquent \u00e8 uno strumento semplice per interagire con un database. \u00c8 un object-relational mapper (ORM) che semplifica la complessit\u00e0 dei database offrendo un modello per &#8230;<\/p>\n","protected":false},"author":199,"featured_media":69168,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[26020],"class_list":["post-69167","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-laravel"],"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>API in Laravel: Creare e Testare un&#039;API in Laravel - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Impara a testare le API in Laravel creando un modello che puoi replicare per costruire un&#039;API in Laravel.\" \/>\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-laravel\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"API in Laravel: Creare e Testare un&#039;API in Laravel\" \/>\n<meta property=\"og:description\" content=\"Impara a testare le API in Laravel creando un modello che puoi replicare per costruire un&#039;API in Laravel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/api-laravel\/\" \/>\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-05-19T11:22:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-24T07:08:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-api.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"3042\" \/>\n\t<meta property=\"og:image:height\" content=\"1521\" \/>\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=\"Impara a testare le API in Laravel creando un modello che puoi replicare per costruire un&#039;API in Laravel.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-api.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=\"8 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-laravel\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-laravel\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"API in Laravel: Creare e Testare un&#8217;API in Laravel\",\"datePublished\":\"2023-05-19T11:22:01+00:00\",\"dateModified\":\"2023-05-24T07:08:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-laravel\/\"},\"wordCount\":1129,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-api.jpg\",\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/api-laravel\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-laravel\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/api-laravel\/\",\"name\":\"API in Laravel: Creare e Testare un'API in Laravel - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-laravel\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-api.jpg\",\"datePublished\":\"2023-05-19T11:22:01+00:00\",\"dateModified\":\"2023-05-24T07:08:02+00:00\",\"description\":\"Impara a testare le API in Laravel creando un modello che puoi replicare per costruire un'API in Laravel.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-laravel\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/api-laravel\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-laravel\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-api.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-api.jpg\",\"width\":3042,\"height\":1521},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/api-laravel\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"API in Laravel: Creare e Testare un&#8217;API in Laravel\"}]},{\"@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":"API in Laravel: Creare e Testare un'API in Laravel - Kinsta\u00ae","description":"Impara a testare le API in Laravel creando un modello che puoi replicare per costruire un'API in Laravel.","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-laravel\/","og_locale":"it_IT","og_type":"article","og_title":"API in Laravel: Creare e Testare un'API in Laravel","og_description":"Impara a testare le API in Laravel creando un modello che puoi replicare per costruire un'API in Laravel.","og_url":"https:\/\/kinsta.com\/it\/blog\/api-laravel\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2023-05-19T11:22:01+00:00","article_modified_time":"2023-05-24T07:08:02+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-api.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Impara a testare le API in Laravel creando un modello che puoi replicare per costruire un'API in Laravel.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-api.jpg","twitter_creator":"@Kinsta_IT","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Jeremy Holcombe","Tempo di lettura stimato":"8 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/api-laravel\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/api-laravel\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"API in Laravel: Creare e Testare un&#8217;API in Laravel","datePublished":"2023-05-19T11:22:01+00:00","dateModified":"2023-05-24T07:08:02+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/api-laravel\/"},"wordCount":1129,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/api-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-api.jpg","inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/api-laravel\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/api-laravel\/","url":"https:\/\/kinsta.com\/it\/blog\/api-laravel\/","name":"API in Laravel: Creare e Testare un'API in Laravel - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/api-laravel\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/api-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-api.jpg","datePublished":"2023-05-19T11:22:01+00:00","dateModified":"2023-05-24T07:08:02+00:00","description":"Impara a testare le API in Laravel creando un modello che puoi replicare per costruire un'API in Laravel.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/api-laravel\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/api-laravel\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/api-laravel\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-api.jpg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-api.jpg","width":3042,"height":1521},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/api-laravel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/it\/argomenti\/laravel\/"},{"@type":"ListItem","position":3,"name":"API in Laravel: Creare e Testare un&#8217;API in Laravel"}]},{"@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\/69167","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=69167"}],"version-history":[{"count":12,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/69167\/revisions"}],"predecessor-version":[{"id":69345,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/69167\/revisions\/69345"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/69167\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/69167\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/69167\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/69167\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/69167\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/69167\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/69167\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/69167\/translations\/es"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/69167\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/69168"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=69167"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=69167"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=69167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}