{"id":66054,"date":"2023-05-19T13:21:10","date_gmt":"2023-05-19T11:21:10","guid":{"rendered":"https:\/\/kinsta.com\/es\/?p=66054&#038;preview=true&#038;preview_id=66054"},"modified":"2025-01-17T13:56:36","modified_gmt":"2025-01-17T12:56:36","slug":"laravel-api","status":"publish","type":"post","link":"https:\/\/kinsta.com\/es\/blog\/laravel-api\/","title":{"rendered":"Laravel API: Crea y Prueba una API en Laravel"},"content":{"rendered":"<p>Laravel <a href=\"https:\/\/laravel.com\/docs\/9.x\/eloquent\" target=\"_blank\" rel=\"noopener noreferrer\">Eloquent<\/a> es una forma sencilla de interactuar con tu base de datos. Es un mapeador objeto-relacional (ORM) que simplifica las complejidades de las bases de datos proporcionando un modelo para interactuar con las tablas.<\/p>\n<p>Como tal, Laravel Eloquent tiene excelentes herramientas para crear y probar API que soporten tu desarrollo. En este art\u00edculo pr\u00e1ctico, ver\u00e1s lo f\u00e1cil que es crear y probar API utilizando Laravel.<\/p>\n<p>En esta demostraci\u00f3n, empezar\u00e1s creando un modelo que podr\u00e1s utilizar para construir la <a href=\"https:\/\/kinsta.com\/es\/blog\/punto-final-de-la-api\/\">API<\/a> y la tabla de la base de datos. A continuaci\u00f3n, ver\u00e1s c\u00f3mo a\u00f1adir un controlador como capa l\u00f3gica de negocio y una ruta para completar la API. A continuaci\u00f3n, aprender\u00e1s a realizar pruebas de API utilizando Postman antes de centrarte finalmente en la autenticaci\u00f3n y la gesti\u00f3n de errores.<\/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>Requisitos Previos<\/h2>\n<p>Para empezar, necesitar\u00e1s:<\/p>\n<ul>\n<li><a href=\"https:\/\/laravel.com\/docs\/9.x\/installation\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel versi\u00f3n 8 o 9<\/a><\/li>\n<li><a href=\"https:\/\/getcomposer.org\/download\/\" target=\"_blank\" rel=\"noopener noreferrer\">Compositor<\/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>Conocimientos b\u00e1sicos de API y <a href=\"https:\/\/kinsta.com\/php\/\">PHP<\/a><\/li>\n<\/ul>\n<h2>Conceptos B\u00e1sicos de API<\/h2>\n<p>Comienza creando un nuevo proyecto Laravel utilizando &lt;code&gt;compositor&lt;\/code&gt;:<\/p>\n<pre><code class=\"language-bash\">composer create-project laravel\/laravel laravel-api-create-test<\/code><\/pre>\n<p>Para iniciar el servidor, ejecuta el siguiente comando, que ejecuta el servidor de aplicaciones en el puerto 8000:<\/p>\n<pre><code class=\"language-bash\">cd laravel-api-create-test\nphp artisan serve<\/code><\/pre>\n<p>Deber\u00edas ver la siguiente pantalla:<\/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=\"The Laravel landing page\" width=\"1250\" height=\"679\"><figcaption class=\"wp-caption-text\">Laravel<\/figcaption><\/figure>\n<p>A continuaci\u00f3n, crea un modelo con una bandera <code>-m<\/code> para la migraci\u00f3n utilizando el c\u00f3digo siguiente:<\/p>\n<pre><code class=\"language-bash\">php artisan make:model Product -m<\/code><\/pre>\n<p>Ahora actualiza el archivo de migraci\u00f3n para incluir el campo requerido. A\u00f1ade los campos de t\u00edtulo y descripci\u00f3n para el modelo de producto y estos dos campos de tabla dentro del archivo <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>El siguiente paso es hacer que estos campos se puedan rellenar. Dentro de <strong>app\/Models\/Product<\/strong><strong>.php<\/strong>, haz que los campos <code>title<\/code> y <code>description<\/code> sean rellenables.<\/p>\n<pre><code class=\"language-php\">protected $fillable = ['title', 'description'];<\/code><\/pre>\n\n<h2>C\u00f3mo Crear un Controlador<\/h2>\n<p>Ahora, crea un archivo controlador para el producto ejecutando el siguiente comando. Esto crear\u00e1 el archivo <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>Ahora, a\u00f1ade la l\u00f3gica para crear y recuperar los productos. Dentro del m\u00e9todo <code>index<\/code>, a\u00f1ade el siguiente c\u00f3digo para recuperar todos los productos:<\/p>\n<pre><code class=\"language-php\">$products = Product::all();\nreturn response()-&gt;json([\n    'status' =&gt; true,\n    'products' =&gt; $products\n]);<\/code><\/pre>\n<p>Despu\u00e9s, debes a\u00f1adir una clase <code>StoreProductRequest<\/code> para almacenar los nuevos productos en la base de datos. A\u00f1ade la siguiente clase en la parte superior del mismo archivo.<\/p>\n<pre><code class=\"language-php\">public function store(StoreProductRequest $request)\n {\n    $product = Product::create($request-&gt;all());\n\n    return response()-&gt;json([\n        'status' =&gt; true,\n        'message' =&gt; \"Product Created successfully!\",\n        'product' =&gt; $product\n    ], 200);\n }<\/code><\/pre>\n<p>Ahora, crear\u00e1s la solicitud, lo que puedes hacer ejecutando el siguiente comando:<\/p>\n<pre><code class=\"language-bash\">php artisan make:request StoreProductRequest<\/code><\/pre>\n<p>Si quieres a\u00f1adir validaciones, puedes utilizar el archivo <strong>app\/Http\/Requests\/StoreProductRequest.php<\/strong>. Para este ejemplo, no hay validaciones.<\/p>\n<h2>C\u00f3mo Crear una Ruta<\/h2>\n<p>El \u00faltimo paso antes de probar la API es a\u00f1adir una ruta. Para ello, a\u00f1ade el siguiente c\u00f3digo dentro del archivo <strong>routes\/api.<\/strong><strong>php<\/strong>. A\u00f1ade la sentencia <code>use<\/code> al principio del archivo y la sentencia <code>Route<\/code> en el cuerpo:<\/p>\n<pre><code class=\"language-php\">use AppHttpControllersApiProductController;\nRoute::apiResource('products', ProductController::class);<\/code><\/pre>\n<p>Antes de empezar a probar la API, aseg\u00farate de que la tabla de <strong>productos<\/strong> est\u00e1 en tu base de datos. Si no existe, crea una utilizando un panel de control como XAMPP. Alternativamente, puedes ejecutar el siguiente comando para migrar la base de datos:<\/p>\n<pre><code class=\"language-bash\">php artisan migrate<\/code><\/pre>\n<h2>C\u00f3mo Probar una API<\/h2>\n<p>Antes de probar la API, aseg\u00farate de que el m\u00e9todo &lt;code&gt;authorize&lt;\/code&gt; dentro de la <strong>app\/Http\/Requests\/StoreProductRequest.<\/strong> php est\u00e1 configurado para devolver &lt;code&gt;true&lt;\/code&gt;.<\/p>\n<p>Ahora, puedes crear un nuevo producto utilizando Postman. Empieza haciendo una petici\u00f3n <code>POST<\/code> a esta 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>. Como se trata de una solicitud a <code>POST<\/code> para crear un nuevo producto, debes pasar un objeto JSON con un t\u00edtulo y una descripci\u00f3n.<\/p>\n<pre><code class=\"language-php\">{\n    \"title\":\"Apple\",\n    \"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=\"Creating a new product in Postman\" width=\"680\" height=\"287\"><figcaption class=\"wp-caption-text\">Crear un nuevo producto en Postman<\/figcaption><\/figure>\n<p>Tras pulsar el bot\u00f3n <strong>Enviar<\/strong>, deber\u00edas ver lo siguiente:<\/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=\"Postman after clicking Send\" width=\"572\" height=\"326\"><figcaption class=\"wp-caption-text\">Despu\u00e9s de hacer clic en Enviar<\/figcaption><\/figure>\n<p>Ahora, recupera los productos creados utilizando la solicitud <code>GET<\/code>. La <a href=\"https:\/\/kinsta.com\/es\/blog\/que-es-una-url\/\">URL<\/a> es la misma. Los resultados ser\u00e1n como los siguientes:<\/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=\"The products fetched by the GET request.\" width=\"792\" height=\"860\"><figcaption class=\"wp-caption-text\">Los productos obtenidos mediante la solicitud GET.<\/figcaption><\/figure>\n<h2>C\u00f3mo Autenticar una API Utilizando Sanctum<\/h2>\n<p>La autenticaci\u00f3n es crucial a la hora de asegurar una API. Laravel lo facilita proporcionando la funcionalidad del token Sanctum, que puedes utilizar como middleware. Asegura la API utilizando tokens generados cuando el usuario se conecta utilizando las credenciales correctas. Recuerda que los usuarios no pueden acceder a la API segura sin un token.<\/p>\n<p>El primer paso para a\u00f1adir la autenticaci\u00f3n es a\u00f1adir un paquete Sanctum utilizando el c\u00f3digo siguiente:<\/p>\n<pre><code class=\"language-bash\">composer require laravel\/sanctum<\/code><\/pre>\n<p>A continuaci\u00f3n, publica el archivo de configuraci\u00f3n de Sanctum:<\/p>\n<pre><code class=\"language-bash\">php artisan vendor:publish --provider=\"LaravelSanctumSanctumServiceProvider\"<\/code><\/pre>\n<p>Despu\u00e9s, a\u00f1ade el token de Sanctum como middleware. Dentro del archivo <strong>app\/Http\/Kernel.<\/strong><strong>php<\/strong>, utiliza la siguiente clase y sustituye <code>middlewareGroups<\/code> por el siguiente c\u00f3digo en la API de los grupos de middleware protegidos.<\/p>\n<pre><code class=\"language-php\">use LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful;<\/code><\/pre>\n<pre><code class=\"language-php\">protected $middlewareGroups = [\n    'web' =&gt; [\n        AppHttpMiddlewareEncryptCookies::class,\n        IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,\n        IlluminateSessionMiddlewareStartSession::class,\n        \/\/ IlluminateSessionMiddlewareAuthenticateSession::class,\n        IlluminateViewMiddlewareShareErrorsFromSession::class,\n        AppHttpMiddlewareVerifyCsrfToken::class,\n        IlluminateRoutingMiddlewareSubstituteBindings::class,\n    ],\n\n    'api' =&gt; [\n        EnsureFrontendRequestsAreStateful::class,\n        'throttle:api',\n        IlluminateRoutingMiddlewareSubstituteBindings::class,\n    ],\n];<\/code><\/pre>\n<p>El siguiente paso es crear un <code>UserController<\/code> y a\u00f1adir el c\u00f3digo para obtener el token para autenticarse.<\/p>\n<pre><code class=\"language-bash\">php artisan make:controller UserController<\/code><\/pre>\n<p>Despu\u00e9s de crear el <code>UserController<\/code>, navega hasta el archivo <strong>app\/Http\/Controllers\/UserController.<\/strong><strong>php<\/strong> y sustituye el c\u00f3digo existente por el siguiente c\u00f3digo:<\/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    \/\/ \n\n    function index(Request $request)\n    {\n        $user= User::where('email', $request-&gt;email)-&gt;first();\n        \/\/ print_r($data);\n            if (!$user || !Hash::check($request-&gt;password, $user-&gt;password)) {\n                return response([\n                    'message' =&gt; ['These credentials do not match our records.']\n                ], 404);\n            }\n        \n             $token = $user-&gt;createToken('my-app-token')-&gt;plainTextToken;\n        \n            $response = [\n                'user' =&gt; $user,\n                'token' =&gt; $token\n            ];\n        \n             return response($response, 201);\n    }\n}<\/code><\/pre>\n<p>Antes de que puedas probar la autenticaci\u00f3n, crea un usuario que emplee seeders. El siguiente comando crea un archivo <strong>UsersTableSeeder<\/strong>.<\/p>\n<pre><code class=\"language-bash\">php artisan make:seeder UsersTableSeeder<\/code><\/pre>\n<p>Dentro del archivo <strong>database\/seeders\/UsersTableSeeder.<\/strong><strong>php<\/strong>, sustituye el c\u00f3digo existente por el siguiente c\u00f3digo para sembrar el usuario:<\/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    \/**\n     * Run the database seeds.\n     *\n     * @return void\n     *\/\n    public function run()\n    {\n        DB::table('users')-&gt;insert([\n            'name' =&gt; 'John Doe',\n            'email' =&gt; 'john@doe.com',\n            'password' =&gt; Hash::make('password')\n        ]);\n    }\n}<\/code><\/pre>\n<p>Ahora ejecuta el sembrador utilizando este comando<\/p>\n<pre><code class=\"language-bash\">php artisan db:seed --class=UsersTableSeeder<\/code><\/pre>\n<p>El \u00faltimo paso que queda en el flujo de autenticaci\u00f3n es utilizar el middleware creado para proteger la ruta. Navega hasta el archivo <strong>routes\/api.php<\/strong> y a\u00f1ade la ruta de productos dentro del middleware.<\/p>\n<pre><code class=\"language-php\">use AppHttpControllersUserController;\n\nRoute::group(['middleware' =&gt; 'auth:sanctum'], function () {\n    Route::apiResource('products', ProductController::class);\n});\n\nRoute::post(\"login\",[UserController::class,'index']);<\/code><\/pre>\n<p>Despu\u00e9s de a\u00f1adir una ruta al middleware, obtendr\u00e1s un error interno del servidor si intentas obtener los productos.<\/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=\"An internal server error after adding a route\" width=\"1044\" height=\"644\"><figcaption class=\"wp-caption-text\">Un error interno del servidor despu\u00e9s de a\u00f1adir una ruta<\/figcaption><\/figure>\n<p>Pero una vez que te conectes, obtengas un token y lo utilices en la cabecera, te autenticar\u00e1 y empezar\u00e1 a funcionar. Puedes enviar una solicitud 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 el siguiente cuerpo:<\/p>\n<pre><code class=\"language-php\">{\n    \"email\":\"john@doe.com\",\n    \"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=\"Successful authentication and the Bearer token\" width=\"574\" height=\"675\"><figcaption class=\"wp-caption-text\">Autenticaci\u00f3n correcta<\/figcaption><\/figure>\n<p>Utiliza el token recibido como token de portador y a\u00f1\u00e1delo como cabecera de autorizaci\u00f3n.<\/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=\"Adding the Bearer token as the Authorization header\" width=\"941\" height=\"858\"><figcaption class=\"wp-caption-text\">A\u00f1adir el c\u00f3digo de portador como cabecera de autorizaci\u00f3n<\/figcaption><\/figure>\n<h2>C\u00f3mo Gestionar los Errores de la API<\/h2>\n<p>Cada vez que env\u00edas una solicitud al servidor, \u00e9ste responde. Con la respuesta, tambi\u00e9n env\u00eda un <a href=\"https:\/\/kinsta.com\/es\/blog\/codigos-de-estado-de-http\/\">c\u00f3digo de estado<\/a>\u00a0seg\u00fan la naturaleza de la respuesta. Por ejemplo, un c\u00f3digo de estado 200 indica que la solicitud se ha realizado correctamente, y un <a href=\"https:\/\/kinsta.com\/es\/blog\/error-404-not-found\/\">404<\/a> sugiere que el servidor no puede encontrar el recurso solicitado.<\/p>\n<p>Sin embargo, un c\u00f3digo de estado no es suficiente. Se necesita un mensaje de error legible por humanos. Laravel ofrece muchas formas de gestionar los errores. Puedes utilizar un bloque try-catch, el m\u00e9todo fallback o enviar una respuesta personalizada. El siguiente c\u00f3digo que has a\u00f1adido a <code>UserController<\/code> lo demuestra.<\/p>\n<pre><code class=\"language-php\">if (!$user || !Hash::check($request-&gt;password, $user-&gt;password)) {\n    return response([\n        'message' =&gt; ['These credentials do not match our records.']\n    ], 404);\n}<\/code><\/pre>\n\n<h2>Resumen<\/h2>\n<p>El Modelo Elocuente de Laravel permite crear, validar y probar API sin esfuerzo. Su mapeo objeto-relacional proporciona un enfoque directo para interactuar con la base de datos.<\/p>\n<p>Adem\u00e1s, actuando como middleware, el token Sanctum de Laravel puede ayudarte a proteger tus API r\u00e1pidamente.<\/p>\n<p>Y si necesitas una mayor optimizaci\u00f3n, la soluci\u00f3n de <a href=\"https:\/\/sevalla.com\/database-hosting\/\">alojamiento de bases de datos<\/a> de Kinsta simplifica la configuraci\u00f3n y gesti\u00f3n de bases de datos para todos tus proyectos web.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Laravel Eloquent es una forma sencilla de interactuar con tu base de datos. Es un mapeador objeto-relacional (ORM) que simplifica las complejidades de las bases de &#8230;<\/p>\n","protected":false},"author":199,"featured_media":66055,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1270,1303],"class_list":["post-66054","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-api","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>Laravel API: Crea y Prueba una API en Laravel - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Aprende a realizar pruebas de API en Laravel mediante la creaci\u00f3n de un modelo que se puede utilizar para construir la mejor API en 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\/es\/blog\/laravel-api\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Laravel API: Crea y Prueba una API en Laravel\" \/>\n<meta property=\"og:description\" content=\"Aprende a realizar pruebas de API en Laravel mediante la creaci\u00f3n de un modelo que se puede utilizar para construir la mejor API en Laravel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/es\/blog\/laravel-api\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-19T11:21:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-17T12:56:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/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=\"Aprende a realizar pruebas de API en Laravel mediante la creaci\u00f3n de un modelo que se puede utilizar para construir la mejor API en Laravel.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/laravel-api.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/laravel-api\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/laravel-api\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Laravel API: Crea y Prueba una API en Laravel\",\"datePublished\":\"2023-05-19T11:21:10+00:00\",\"dateModified\":\"2025-01-17T12:56:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/laravel-api\/\"},\"wordCount\":1309,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/laravel-api\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/laravel-api.jpg\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/laravel-api\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/laravel-api\/\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/laravel-api\/\",\"name\":\"Laravel API: Crea y Prueba una API en Laravel - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/laravel-api\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/laravel-api\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/laravel-api.jpg\",\"datePublished\":\"2023-05-19T11:21:10+00:00\",\"dateModified\":\"2025-01-17T12:56:36+00:00\",\"description\":\"Aprende a realizar pruebas de API en Laravel mediante la creaci\u00f3n de un modelo que se puede utilizar para construir la mejor API en Laravel.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/laravel-api\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/laravel-api\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/laravel-api\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/laravel-api.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/laravel-api.jpg\",\"width\":3042,\"height\":1521},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/laravel-api\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/es\/secciones\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Laravel API: Crea y Prueba una API en Laravel\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/es\/#website\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"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\/es\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/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\/es\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Laravel API: Crea y Prueba una API en Laravel - Kinsta\u00ae","description":"Aprende a realizar pruebas de API en Laravel mediante la creaci\u00f3n de un modelo que se puede utilizar para construir la mejor API en 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\/es\/blog\/laravel-api\/","og_locale":"es_ES","og_type":"article","og_title":"Laravel API: Crea y Prueba una API en Laravel","og_description":"Aprende a realizar pruebas de API en Laravel mediante la creaci\u00f3n de un modelo que se puede utilizar para construir la mejor API en Laravel.","og_url":"https:\/\/kinsta.com\/es\/blog\/laravel-api\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2023-05-19T11:21:10+00:00","article_modified_time":"2025-01-17T12:56:36+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/laravel-api.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Aprende a realizar pruebas de API en Laravel mediante la creaci\u00f3n de un modelo que se puede utilizar para construir la mejor API en Laravel.","twitter_image":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/laravel-api.jpg","twitter_creator":"@Kinsta_ES","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Jeremy Holcombe","Tiempo de lectura":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/es\/blog\/laravel-api\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/blog\/laravel-api\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Laravel API: Crea y Prueba una API en Laravel","datePublished":"2023-05-19T11:21:10+00:00","dateModified":"2025-01-17T12:56:36+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/laravel-api\/"},"wordCount":1309,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/laravel-api\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/laravel-api.jpg","inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/es\/blog\/laravel-api\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/es\/blog\/laravel-api\/","url":"https:\/\/kinsta.com\/es\/blog\/laravel-api\/","name":"Laravel API: Crea y Prueba una API en Laravel - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/laravel-api\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/laravel-api\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/laravel-api.jpg","datePublished":"2023-05-19T11:21:10+00:00","dateModified":"2025-01-17T12:56:36+00:00","description":"Aprende a realizar pruebas de API en Laravel mediante la creaci\u00f3n de un modelo que se puede utilizar para construir la mejor API en Laravel.","breadcrumb":{"@id":"https:\/\/kinsta.com\/es\/blog\/laravel-api\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/es\/blog\/laravel-api\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/blog\/laravel-api\/#primaryimage","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/laravel-api.jpg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/05\/laravel-api.jpg","width":3042,"height":1521},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/es\/blog\/laravel-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/es\/secciones\/laravel\/"},{"@type":"ListItem","position":3,"name":"Laravel API: Crea y Prueba una API en Laravel"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/es\/#website","url":"https:\/\/kinsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","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\/es\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/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\/es\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/66054","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/comments?post=66054"}],"version-history":[{"count":7,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/66054\/revisions"}],"predecessor-version":[{"id":66140,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/66054\/revisions\/66140"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/66054\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/66054\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/66054\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/66054\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/66054\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/66054\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/66054\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/66054\/translations\/es"},{"href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/66054\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media\/66055"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media?parent=66054"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/tags?post=66054"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/topic?post=66054"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}