{"id":69295,"date":"2023-05-19T12:21:30","date_gmt":"2023-05-19T11:21:30","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=69295&#038;preview=true&#038;preview_id=69295"},"modified":"2024-09-17T14:41:57","modified_gmt":"2024-09-17T13:41:57","slug":"creer-api-laravel","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/","title":{"rendered":"Laravel API : Cr\u00e9ez et testez une API dans Laravel"},"content":{"rendered":"<p>Laravel <a href=\"https:\/\/laravel.com\/docs\/9.x\/eloquent\" target=\"_blank\" rel=\"noopener noreferrer\">Eloquent<\/a> est un moyen simple d&rsquo;interagir avec votre base de donn\u00e9es. Il s&rsquo;agit d&rsquo;un mappeur objet-relationnel (Object-Relational Mapper ou ORM) qui simplifie les complexit\u00e9s des bases de donn\u00e9es en fournissant un mod\u00e8le pour interagir avec les tables.<\/p>\n<p>En tant que tel, Laravel Eloquent dispose d&rsquo;excellents outils pour cr\u00e9er et tester des API afin de soutenir votre d\u00e9veloppement. Dans cet article pratique, vous verrez \u00e0 quel point il est facile de cr\u00e9er et de tester des API \u00e0 l&rsquo;aide de Laravel.<\/p>\n<p>Dans cette d\u00e9monstration, vous commencerez par cr\u00e9er un mod\u00e8le que vous pourrez utiliser pour construire l&rsquo;<a href=\"https:\/\/kinsta.com\/fr\/blog\/api-endpoint\/\">API<\/a> et la table de la base de donn\u00e9es. Ensuite, vous verrez comment ajouter un contr\u00f4leur en tant que couche de logique commerciale et une route pour compl\u00e9ter l&rsquo;API. Vous apprendrez ensuite \u00e0 tester les API \u00e0 l&rsquo;aide de Postman avant de vous concentrer sur l&rsquo;authentification et la gestion des erreurs.<\/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>Pr\u00e9-requis<\/h2>\n<p>Pour commencer, voici ce dont vous aurez besoin :<\/p>\n<ul>\n<li><a href=\"https:\/\/laravel.com\/docs\/9.x\/installation\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel version 8 ou 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>Connaissance de base des API et de <a href=\"https:\/\/kinsta.com\/php\/\">PHP<\/a><\/li>\n<\/ul>\n<h2>Principes de base des API<\/h2>\n<p>Commencez par cr\u00e9er un nouveau projet Laravel \u00e0 l&rsquo;aide de &lt;code&gt;composer&lt;\/code&gt; :<\/p>\n<pre><code class=\"language-bash\">composer create-project laravel\/laravel laravel-api-create-test<\/code><\/pre>\n<p>Pour d\u00e9marrer le serveur, ex\u00e9cutez la commande suivante, qui lance le serveur d&rsquo;application sur le port 8000 :<\/p>\n<pre><code class=\"language-bash\">cd laravel-api-create-test\nphp artisan serve<\/code><\/pre>\n<p>L&rsquo;\u00e9cran suivant devrait s&rsquo;afficher :<\/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=\"Laravel\" width=\"1250\" height=\"679\"><figcaption class=\"wp-caption-text\">Laravel<\/figcaption><\/figure>\n<p>Ensuite, cr\u00e9ez un mod\u00e8le avec un drapeau <code>-m<\/code> pour la migration en utilisant le code ci-dessous :<\/p>\n<pre><code class=\"language-bash\">php artisan make:model Product -m<\/code><\/pre>\n<p>Mettez maintenant \u00e0 jour le fichier de migration pour y inclure le champ n\u00e9cessaires. Ajoutez les champs title et description pour le mod\u00e8le de produit et ces deux champs de table dans le fichier <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>L&rsquo;\u00e9tape suivante consiste \u00e0 rendre ces champs remplissables. Dans <strong>app\/Models\/Product<\/strong><strong>.php<\/strong>, rendez les champs <code>title<\/code> et <code>description<\/code> remplissables.<\/p>\n<pre><code class=\"language-php\">protected $fillable = ['title', 'description'];<\/code><\/pre>\n\n<h2>Comment cr\u00e9er un contr\u00f4leur<\/h2>\n<p>Cr\u00e9ez maintenant un fichier contr\u00f4leur pour le produit en ex\u00e9cutant la commande suivante. Cela cr\u00e9era le fichier <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>Ajoutez maintenant la logique de cr\u00e9ation et de r\u00e9cup\u00e9ration des produits. Dans la m\u00e9thode <code>index<\/code>, ajoutez le code suivant pour r\u00e9cup\u00e9rer tous les produits :<\/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>Ensuite, vous devez ajouter une classe <code>StoreProductRequest<\/code> pour stocker les nouveaux produits dans la base de donn\u00e9es. Ajoutez la classe suivante au d\u00e9but du m\u00eame fichier.<\/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>Maintenant, vous allez cr\u00e9er la requ\u00eate, ce que vous pouvez faire en ex\u00e9cutant la commande suivante :<\/p>\n<pre><code class=\"language-bash\">php artisan make:request StoreProductRequest<\/code><\/pre>\n<p>Si vous souhaitez ajouter des validations, vous pouvez utiliser le fichier <strong>app\/Http\/Requests\/StoreProductRequest.php<\/strong>. Pour cette d\u00e9monstration, il n&rsquo;y a pas de validations.<\/p>\n<h2>Comment cr\u00e9er une route<\/h2>\n<p>La derni\u00e8re \u00e9tape avant de tester l&rsquo;API consiste \u00e0 ajouter une route. Pour cela, ajoutez le code suivant dans le fichier <strong>routes\/api.php<\/strong>. Ajoutez l&rsquo;instruction <code>use<\/code> au d\u00e9but du fichier et l&rsquo;instruction <code>Route<\/code> dans le corps du texte :<\/p>\n<pre><code class=\"language-php\"><span id=\"urn:enhancement-b0989e10-02ad-4833-b1cc-237168d18cdb\" class=\"textannotation\">use<\/span> <span id=\"urn:enhancement-1a3473b3-7517-43d0-a94b-3ed3d7e3a340\" class=\"textannotation\">App<\/span>\\<span id=\"urn:enhancement-ed3bd5ad-2c53-4b1f-97e0-37c19d93d61c\" class=\"textannotation\">Http<\/span>\\Controllers\\<span id=\"urn:enhancement-91c9c203-8c30-430b-9f76-735a0063f963\" class=\"textannotation\">Api<\/span>\\ProductController;\nRoute::apiResource('products', ProductController::class);<\/code><\/pre>\n<p>Avant de commencer \u00e0 tester l&rsquo;API, assurez-vous que la table <strong>products<\/strong> se trouve dans votre base de donn\u00e9es. Si elle n&rsquo;existe pas, cr\u00e9ez-en une \u00e0 l&rsquo;aide d&rsquo;un panneau de contr\u00f4le tel que XAMPP. Vous pouvez \u00e9galement ex\u00e9cuter la commande suivante pour migrer la base de donn\u00e9es :<\/p>\n<pre><code class=\"language-bash\">php artisan migrate<\/code><\/pre>\n<h2>Comment tester une API<\/h2>\n<p>Avant de tester l&rsquo;API, assurez-vous que la m\u00e9thode &lt;code&gt;authorize&lt;\/code&gt; \u00e0 l&rsquo;int\u00e9rieur de <strong>app\/Http\/Requests\/StoreProductRequest.php<\/strong> est configur\u00e9e pour renvoyer &lt;code&gt;true&lt;\/code&gt;.<\/p>\n<p>Vous pouvez maintenant cr\u00e9er un nouveau produit \u00e0 l&rsquo;aide de Postman. Commencez par envoyer une requ\u00eate <code>POST<\/code> \u00e0 l&rsquo;URL suivante : <a href=\"http:\/\/127.0.0.1:8000\/api\/products\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/127.0.0.1:8000\/api\/products\/<\/a>. Comme il s&rsquo;agit d&rsquo;une requ\u00eate <code>POST<\/code> pour la cr\u00e9ation d&rsquo;un nouveau produit, vous devez transmettre un objet JSON avec un titre et une description.<\/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=\"Cr\u00e9ation d'un nouveau produit dans Postman\" width=\"680\" height=\"287\"><figcaption class=\"wp-caption-text\">Cr\u00e9ation d&rsquo;un nouveau produit dans Postman<\/figcaption><\/figure>\n<p>Apr\u00e8s avoir cliqu\u00e9 sur le bouton <strong>Envoyer<\/strong>, vous devriez voir ce qui suit :<\/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 apr\u00e8s avoir cliqu\u00e9 sur Envoyer\" width=\"572\" height=\"326\"><figcaption class=\"wp-caption-text\">Postman apr\u00e8s avoir cliqu\u00e9 sur Envoyer<\/figcaption><\/figure>\n<p>Maintenant, r\u00e9cup\u00e9rez les produits cr\u00e9\u00e9s en utilisant la requ\u00eate <code>GET<\/code>. L&rsquo;<a href=\"https:\/\/kinsta.com\/fr\/blog\/description-url\/\">URL<\/a> est la m\u00eame. Les r\u00e9sultats ressembleront \u00e0 ce qui suit :<\/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=\"Les produits r\u00e9cup\u00e9r\u00e9s par la requ\u00eate GET.\" width=\"792\" height=\"860\"><figcaption class=\"wp-caption-text\">Les produits r\u00e9cup\u00e9r\u00e9s par la requ\u00eate GET.<\/figcaption><\/figure>\n<h2>Comment authentifier une API \u00e0 l&rsquo;aide de Sanctum<\/h2>\n<p>L&rsquo;authentification est cruciale pour s\u00e9curiser une API. Laravel facilite cette t\u00e2che en fournissant la fonctionnalit\u00e9 du jeton Sanctum, que vous pouvez utiliser en tant que middleware. Il s\u00e9curise l&rsquo;API \u00e0 l&rsquo;aide de jetons g\u00e9n\u00e9r\u00e9s lorsque l&rsquo;utilisateur se connecte \u00e0 l&rsquo;aide des informations d&rsquo;identification correctes. N&rsquo;oubliez pas que les utilisateurs ne peuvent pas acc\u00e9der \u00e0 l&rsquo;API s\u00e9curis\u00e9e sans jeton.<\/p>\n<p>La premi\u00e8re \u00e9tape pour ajouter l&rsquo;authentification consiste \u00e0 ajouter un paquetage Sanctum \u00e0 l&rsquo;aide du code ci-dessous :<\/p>\n<pre><code class=\"language-bash\">composer require laravel\/sanctum<\/code><\/pre>\n<p>Ensuite, publiez le fichier de configuration de Sanctum :<\/p>\n<pre><code class=\"language-bash\">php <span id=\"urn:enhancement-6e2be881-ccc9-4485-a7f3-4cc5620f53a0\" class=\"textannotation\">artisan<\/span> <span id=\"urn:enhancement-abc74fd2-8a5e-4b43-ba20-a7ba28f87325\" class=\"textannotation\">vendor<\/span>:publish --provider=\"<span id=\"urn:enhancement-f489099d-26c0-4bff-9f30-e2adf3d67c8c\" class=\"textannotation\">Laravel<\/span>\\<span id=\"urn:enhancement-869b370e-0ff0-4e5f-9ac9-3606836a7018\" class=\"textannotation\">Sanctum<\/span>\\SanctumServiceProvider\"<\/code><\/pre>\n<p>Ensuite, ajoutez le token de Sanctum en tant que middleware. Dans le fichier <strong>app\/Http\/Kernel.php<\/strong>, utilisez la classe suivante et remplacez <code>middlewareGroups<\/code> par le code suivant dans l&rsquo;API des groupes middleware prot\u00e9g\u00e9s.<\/p>\n<pre><code class=\"language-php\"><span id=\"urn:enhancement-fb53bea9-e6b2-4269-88e0-ff9104d93dbb\" class=\"textannotation\">use<\/span> <span id=\"urn:enhancement-2f31c28c-cc7c-479d-8e98-9ed8d612cfd7\" class=\"textannotation\">Laravel<\/span>\\<span id=\"urn:enhancement-37bbd861-c361-44a1-9a39-f1d1a5c797e5\" class=\"textannotation\">Sanctum<\/span>\\<span id=\"urn:enhancement-5a9c089f-212c-4f81-a0dd-3e0bb2f99264\" class=\"textannotation\">Http<\/span>\\<span id=\"urn:enhancement-3a582418-12f4-4bef-bb7c-4aa7f4c8e53f\" class=\"textannotation\">Middleware<\/span>\\EnsureFrontendRequestsAreStateful;<\/code><\/pre>\n<pre><code class=\"language-php\">protected $middlewareGroups = [\n    'web' =&gt; [\n         \\<span id=\"urn:enhancement-8a8cdbe9-4208-4774-9180-60f356681ec9\" class=\"textannotation\">App<\/span>\\<span id=\"urn:enhancement-a5d1212f-e01a-43a3-8b09-5d9894658be7\" class=\"textannotation\">Http<\/span>\\<span id=\"urn:enhancement-d39af114-1aa5-4184-832c-f14f6497d285\" class=\"textannotation\">Middleware<\/span>\\EncryptCookies::<span id=\"urn:enhancement-bdcf27f8-ea99-4e00-bb7d-8f38070ae783\" class=\"textannotation\">class<\/span>,\n        \\Illuminate\\<span id=\"urn:enhancement-efa6ef22-e6bc-4ff4-8687-6f36fe2e0dbc\" class=\"textannotation\">Cookie<\/span>\\<span id=\"urn:enhancement-f65d998e-2d39-4033-bf10-6ecdceed6639\" class=\"textannotation\">Middleware<\/span>\\AddQueuedCookiesToResponse::<span id=\"urn:enhancement-73b40641-1a03-43ed-b791-2f25844c9907\" class=\"textannotation\">class<\/span>,\n        \\Illuminate\\<span id=\"urn:enhancement-63dc2b73-d194-4a1c-8411-afa1c9d1e404\" class=\"textannotation\">Session<\/span>\\<span id=\"urn:enhancement-a58f5f10-5f18-4ab1-8653-62a77f2e0360\" class=\"textannotation\">Middleware<\/span>\\StartSession::<span id=\"urn:enhancement-427eaccd-b0eb-415d-80cb-1560960a8e55\" class=\"textannotation\">class<\/span>,\n        \/\/ \\Illuminate\\<span id=\"urn:enhancement-7bba3dae-6120-4fe1-a9c3-19e4974d7d11\" class=\"textannotation\">Session<\/span>\\<span id=\"urn:enhancement-9c94e766-4ae3-40e8-87bb-ac47dff5ab08\" class=\"textannotation\">Middleware<\/span>\\AuthenticateSession::<span id=\"urn:enhancement-5fe9b419-991a-439b-af65-55551eca0385\" class=\"textannotation\">class<\/span>,\n        \\Illuminate\\View\\<span id=\"urn:enhancement-5795b901-24bb-477f-afc5-1c0d7445917f\" class=\"textannotation\">Middleware<\/span>\\ShareErrorsFromSession::<span id=\"urn:enhancement-92636f64-c878-4dac-84d0-4678837b6ed4\" class=\"textannotation\">class<\/span>,\n        \\<span id=\"urn:enhancement-4637240c-f378-4fcd-906e-75097df6504b\" class=\"textannotation\">App<\/span>\\<span id=\"urn:enhancement-8ab0961e-ee58-4e7e-8580-05da9c75061b\" class=\"textannotation\">Http<\/span>\\<span id=\"urn:enhancement-be369863-89f4-48f5-ac26-2286f161bd93\" class=\"textannotation\">Middleware<\/span>\\VerifyCsrfToken::<span id=\"urn:enhancement-3f6e67a0-33d8-41d8-bdf8-36e98aae080b\" class=\"textannotation\">class<\/span>,\n        \\Illuminate\\Routing\\<span id=\"urn:enhancement-42d772fb-2589-4066-a7e0-00ba2bf6cc4b\" class=\"textannotation\">Middleware<\/span>\\SubstituteBindings::<span id=\"urn:enhancement-0424a1ab-3b71-4022-aa9f-83ef33ecf98f\" class=\"textannotation\">class<\/span>,\n    ],\n\n    'api' =&gt; [\n        EnsureFrontendRequestsAreStateful::class,\n        'throttle:api',\n        \\Illuminate\\Routing\\<span id=\"urn:enhancement-2697725b-f74b-4df1-b261-ddaf0d5870b3\" class=\"textannotation\">Middleware<\/span>\\SubstituteBindings::<span id=\"urn:enhancement-7d8bd234-c40f-4500-892e-ec9decba68e3\" class=\"textannotation\">class<\/span>,\n    ],\n];<\/code><\/pre>\n<p>L&rsquo;\u00e9tape suivante consiste \u00e0 cr\u00e9er un site <code>UserController<\/code> et \u00e0 ajouter le code permettant d&rsquo;obtenir le jeton d&rsquo;authentification.<\/p>\n<pre><code class=\"language-bash\">php artisan make:controller UserController<\/code><\/pre>\n<p>Apr\u00e8s avoir cr\u00e9\u00e9 le site <code>UserController<\/code>, naviguez jusqu&rsquo;au fichier <strong>app\/Http\/Controllers\/UserController.php<\/strong> et remplacez le code existant par le code suivant :<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\n<span id=\"urn:enhancement-1f361c35-5cb3-4a3b-a90d-8ddf3e7ef1da\" class=\"textannotation\">namespace<\/span> <span id=\"urn:enhancement-68b287e1-3037-4f67-8286-4a3f89f5f00e\" class=\"textannotation\">App<\/span>\\<span id=\"urn:enhancement-d1ea3977-d4b0-4aef-8b0a-021ae20636a9\" class=\"textannotation\">Http<\/span>\\Controllers;\n\n<span id=\"urn:enhancement-bb67d5dd-fa30-4646-acd9-460ccb66378b\" class=\"textannotation\">use<\/span> Illuminate\\<span id=\"urn:enhancement-03f4b4f2-f541-4672-bdac-2a34f43833ce\" class=\"textannotation\">Http<\/span>\\Request;\n<span id=\"urn:enhancement-af870193-e48a-4f58-b505-d05630fc2cb8\" class=\"textannotation\">use<\/span> <span id=\"urn:enhancement-827ed822-20e2-422c-83cb-2cb8f4cf74d9\" class=\"textannotation\">App<\/span>\\Models\\<span id=\"urn:enhancement-ef62bf9a-b004-47b0-92b5-4065b21ddc3b\" class=\"textannotation\">User<\/span>;\n<span id=\"urn:enhancement-c9de758a-d91f-4723-9ab0-f0b388fd52f1\" class=\"textannotation\">use<\/span> Illuminate\\Support\\<span id=\"urn:enhancement-e0cf4e59-8f4b-4cd5-9b67-a81b6246d6d1\" class=\"textannotation\">Facades<\/span>\\<span id=\"urn:enhancement-5593d2ac-c7a4-4abb-8ab3-cf4b9a618abd\" class=\"textannotation\">Hash<\/span>;\n<span id=\"urn:enhancement-0780d112-3ef8-4677-a2d3-d638e358abea\" class=\"textannotation\">class<\/span> UserController extends <span id=\"urn:enhancement-89a74cbf-0cbe-4e71-a790-e18e2f70f443\" class=\"textannotation\">Controller<\/span>\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>Avant de tester l&rsquo;authentification, cr\u00e9ez un utilisateur employant des seeders. La commande suivante cr\u00e9e un fichier <strong>UsersTableSeeder<\/strong>.<\/p>\n<pre><code class=\"language-bash\">php artisan make:seeder UsersTableSeeder<\/code><\/pre>\n<p>Dans le fichier <strong>database\/seeders\/UsersTableSeeder.php<\/strong>, remplacez le code existant par le code suivant pour ensemencer l&rsquo;utilisateur :<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\n<span id=\"urn:enhancement-cb9ca121-bd8c-433e-ac84-b94c35af6419\" class=\"textannotation\">namespace<\/span> <span id=\"urn:enhancement-79af42ce-57eb-4188-b0fc-d056bdbca7ef\" class=\"textannotation\">Database<\/span>\\Seeders;\n<span id=\"urn:enhancement-e1a6d74c-e3fe-42f1-b571-4ec87ae24c1e\" class=\"textannotation\">use<\/span> Illuminate\\<span id=\"urn:enhancement-5d794b14-7d09-4aa0-a10a-6ebb440173b5\" class=\"textannotation\">Database<\/span>\\Seeder;\n<span id=\"urn:enhancement-601841cf-cae5-4cc2-ac98-2dc2d3ed8580\" class=\"textannotation\">use<\/span> Illuminate\\Support\\<span id=\"urn:enhancement-37b5f2dc-2fe0-4d2d-b78e-06c7650ad4cc\" class=\"textannotation\">Facades<\/span>\\DB;\n<span id=\"urn:enhancement-56dc8cf5-ecce-4d40-96f1-fcfb2c23fad2\" class=\"textannotation\">use<\/span> Illuminate\\Support\\<span id=\"urn:enhancement-87615552-eb28-4dec-a3a1-449f7bde3cb2\" class=\"textannotation\">Facades<\/span>\\<span id=\"urn:enhancement-a04b2c52-d5cd-4ed4-a45d-33af2940fa23\" class=\"textannotation\">Hash<\/span>;\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>Ex\u00e9cutez maintenant le seeder \u00e0 l&rsquo;aide de la commande suivante :<\/p>\n<pre><code class=\"language-bash\">php artisan db:seed --class=UsersTableSeeder<\/code><\/pre>\n<p>La derni\u00e8re \u00e9tape du flux d&rsquo;authentification consiste \u00e0 utiliser le middleware cr\u00e9\u00e9 pour prot\u00e9ger la route. Naviguez jusqu&rsquo;au fichier <strong>routes\/api.php<\/strong> et ajoutez la route des produits \u00e0 l&rsquo;int\u00e9rieur du middleware.<\/p>\n<pre><code class=\"language-php\"><span id=\"urn:enhancement-d75a5c71-1b38-47bd-98d2-07d4e51da91f\" class=\"textannotation\">use<\/span> <span id=\"urn:enhancement-ba8f4351-2274-4426-b56a-e26b3fbc226d\" class=\"textannotation\">App<\/span>\\<span id=\"urn:enhancement-db29b9db-277b-4858-b845-b5b53830adfe\" class=\"textannotation\">Http<\/span>\\Controllers\\UserController;\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>Apr\u00e8s avoir ajout\u00e9 une route au middleware, vous obtiendrez une erreur de serveur interne si vous essayez de r\u00e9cup\u00e9rer les produits.<\/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=\"Une erreur de serveur interne apr\u00e8s l'ajout d'une route\" width=\"1044\" height=\"644\"><figcaption class=\"wp-caption-text\">Une erreur de serveur interne apr\u00e8s l&rsquo;ajout d&rsquo;une route<\/figcaption><\/figure>\n<p>Mais une fois que vous vous \u00eates connect\u00e9, que vous avez obtenu un jeton et que vous l&rsquo;avez utilis\u00e9 dans l&rsquo;en-t\u00eate, vous serez authentifi\u00e9 et vous pourrez commencer \u00e0 travailler. Vous pouvez envoyer une requ\u00eate POST \u00e0 <a href=\"http:\/\/127.0.0.1:8000\/api\/login\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/127.0.0.1:8000\/api\/login<\/a> avec le corps suivant :<\/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=\"Authentification r\u00e9ussie\" width=\"574\" height=\"675\"><figcaption class=\"wp-caption-text\">Authentification r\u00e9ussie<\/figcaption><\/figure>\n<p>Utilisez le jeton re\u00e7u comme jeton de support et ajoutez-le \u00e0 l&rsquo;en-t\u00eate 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=\"Ajout du jeton Bearer en tant qu'en-t\u00eate d'autorisation\" width=\"941\" height=\"858\"><figcaption class=\"wp-caption-text\">Ajout du jeton Bearer en tant qu&rsquo;en-t\u00eate d&rsquo;autorisation<\/figcaption><\/figure>\n<h2>Comment g\u00e9rer les erreurs de l&rsquo;API<\/h2>\n<p>Chaque fois que vous envoyez une requ\u00eate au serveur, celui-ci r\u00e9pond. Avec la r\u00e9ponse, il envoie \u00e9galement un <a href=\"https:\/\/kinsta.com\/fr\/blog\/codes-statut-http\/\">code d&rsquo;\u00e9tat<\/a> en fonction de la nature de la r\u00e9ponse. Par exemple, un code d&rsquo;\u00e9tat 200 indique que la demande a abouti, tandis qu&rsquo;un code d&rsquo;\u00e9tat <a href=\"https:\/\/kinsta.com\/fr\/blog\/erreur-404-not-found\/\">404<\/a> indique que le serveur n&rsquo;a pas trouv\u00e9 la ressource demand\u00e9e.<\/p>\n<p>Cependant, un code d&rsquo;\u00e9tat ne suffit pas. Un message d&rsquo;erreur lisible par l&rsquo;homme est n\u00e9cessaire. Laravel propose de nombreuses fa\u00e7ons de g\u00e9rer les erreurs. Vous pouvez utiliser un bloc try-catch, la m\u00e9thode fallback ou envoyer une r\u00e9ponse personnalis\u00e9e. Le code suivant que vous avez ajout\u00e9 \u00e0 l&rsquo;adresse <code>UserController<\/code> en fait la d\u00e9monstration.<\/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>R\u00e9sum\u00e9<\/h2>\n<p>Le mod\u00e8le \u00e9loquent de Laravel facilite la cr\u00e9ation, la validation et le test des API. Son mapping objet-relationnel fournit une approche directe pour interagir avec la base de donn\u00e9es.<\/p>\n<p>De plus, en tant que middleware, le jeton Sanctum de Laravel peut vous aider \u00e0 s\u00e9curiser rapidement vos API.<\/p>\n<p>Et si vous avez besoin d&rsquo;une optimisation suppl\u00e9mentaire, la solution d&rsquo;<a href=\"https:\/\/sevalla.com\/database-hosting\/\">h\u00e9bergement de bases de donn\u00e9es<\/a> de Kinsta simplifie la mise en place et la gestion des bases de donn\u00e9es pour tous vos projets web.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Laravel Eloquent est un moyen simple d&rsquo;interagir avec votre base de donn\u00e9es. Il s&rsquo;agit d&rsquo;un mappeur objet-relationnel (Object-Relational Mapper ou ORM) qui simplifie les complexit\u00e9s des &#8230;<\/p>\n","protected":false},"author":199,"featured_media":69296,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[953,986],"class_list":["post-69295","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 : Cr\u00e9ez et testez une API dans Laravel - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Apprenez \u00e0 effectuer des tests d&#039;API avec Laravel en cr\u00e9ant un mod\u00e8le que vous pouvez utiliser pour construire l&#039;API dans 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\/fr\/blog\/creer-api-laravel\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Laravel API : Cr\u00e9ez et testez une API dans Laravel\" \/>\n<meta property=\"og:description\" content=\"Apprenez \u00e0 effectuer des tests d&#039;API avec Laravel en cr\u00e9ant un mod\u00e8le que vous pouvez utiliser pour construire l&#039;API dans Laravel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-19T11:21:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-17T13:41:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/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=\"Apprenez \u00e0 effectuer des tests d&#039;API avec Laravel en cr\u00e9ant un mod\u00e8le que vous pouvez utiliser pour construire l&#039;API dans Laravel.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/laravel-api.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Laravel API : Cr\u00e9ez et testez une API dans Laravel\",\"datePublished\":\"2023-05-19T11:21:30+00:00\",\"dateModified\":\"2024-09-17T13:41:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/\"},\"wordCount\":1434,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/laravel-api.jpg\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/\",\"name\":\"Laravel API : Cr\u00e9ez et testez une API dans Laravel - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/laravel-api.jpg\",\"datePublished\":\"2023-05-19T11:21:30+00:00\",\"dateModified\":\"2024-09-17T13:41:57+00:00\",\"description\":\"Apprenez \u00e0 effectuer des tests d'API avec Laravel en cr\u00e9ant un mod\u00e8le que vous pouvez utiliser pour construire l'API dans Laravel.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/laravel-api.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/laravel-api.jpg\",\"width\":3042,\"height\":1521},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/api\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Laravel API : Cr\u00e9ez et testez une API dans Laravel\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"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\/fr\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/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\/fr\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Laravel API : Cr\u00e9ez et testez une API dans Laravel - Kinsta\u00ae","description":"Apprenez \u00e0 effectuer des tests d'API avec Laravel en cr\u00e9ant un mod\u00e8le que vous pouvez utiliser pour construire l'API dans 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\/fr\/blog\/creer-api-laravel\/","og_locale":"fr_FR","og_type":"article","og_title":"Laravel API : Cr\u00e9ez et testez une API dans Laravel","og_description":"Apprenez \u00e0 effectuer des tests d'API avec Laravel en cr\u00e9ant un mod\u00e8le que vous pouvez utiliser pour construire l'API dans Laravel.","og_url":"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2023-05-19T11:21:30+00:00","article_modified_time":"2024-09-17T13:41:57+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/laravel-api.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Apprenez \u00e0 effectuer des tests d'API avec Laravel en cr\u00e9ant un mod\u00e8le que vous pouvez utiliser pour construire l'API dans Laravel.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/laravel-api.jpg","twitter_creator":"@kinsta_fr","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Jeremy Holcombe","Dur\u00e9e de lecture estim\u00e9e":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Laravel API : Cr\u00e9ez et testez une API dans Laravel","datePublished":"2023-05-19T11:21:30+00:00","dateModified":"2024-09-17T13:41:57+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/"},"wordCount":1434,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/laravel-api.jpg","inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/","url":"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/","name":"Laravel API : Cr\u00e9ez et testez une API dans Laravel - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/laravel-api.jpg","datePublished":"2023-05-19T11:21:30+00:00","dateModified":"2024-09-17T13:41:57+00:00","description":"Apprenez \u00e0 effectuer des tests d'API avec Laravel en cr\u00e9ant un mod\u00e8le que vous pouvez utiliser pour construire l'API dans Laravel.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/laravel-api.jpg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/05\/laravel-api.jpg","width":3042,"height":1521},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/creer-api-laravel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"API","item":"https:\/\/kinsta.com\/fr\/sujets\/api\/"},{"@type":"ListItem","position":3,"name":"Laravel API : Cr\u00e9ez et testez une API dans Laravel"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","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\/fr\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/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\/fr\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/69295","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=69295"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/69295\/revisions"}],"predecessor-version":[{"id":69305,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/69295\/revisions\/69305"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/69295\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/69295\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/69295\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/69295\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/69295\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/69295\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/69295\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/69295\/translations\/es"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/69295\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/69296"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=69295"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=69295"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=69295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}