Lumen: une alternative Laravel légère pour les microservices et les API
Ce tutoriel montre la construction d'une API d'analyse de marque à l'aide de Lumen, un micro-travail construit sur des composants illuminés de Laravel. Idéal pour les petites applications et services, la nature légère de Lumen assure des temps de démarrage rapides en chargeant sélectivement les composants. Nous tirons parti du package league/commonmark
pour l'analyse de marque.
Pourquoi choisir Lumen?
Lumen offre une approche rationalisée pour les développeurs déjà familiers avec la syntaxe et l'élégance de Laravel. Contrairement à l'architecture complète de Laravel, Lumen évite les composants inutiles (éloquent, lame, etc.), résultant en une empreinte d'application plus petite et plus rapide, parfaite pour les tâches focalisées.
Configuration du projet: une API d'analyse de marque
Notre application acceptera le texte Markdown en entrée et renvoie le HTML analysé en JSON. Cela présente les capacités de Lumen dans un contexte pratique. Le code complet est disponible sur github (lien omis, selon le texte d'origine).
Installation et dépendances
Utilisez le programme d'installation de Lumen (composer global require "laravel/lumen-installer=~1.0"
) pour la création rapide de projets (lumen new my-project
). Alternativement, utilisez le compositeur: composer create-project laravel/lumen my-project --prefer-dist
. Installez league/commonmark
avec composer require league/commonmark
.
Structure du répertoire
La structure Lean de Lumen omet initialement les dossiers comme config
, database
et resources
. Ceux-ci peuvent être ajoutés en utilisant des commandes d'artisan:
php artisan make foundation
: crée des dossiers resources
et database
. php artisan make resources
: crée le dossier resources
. php artisan make database
: crée le dossier database
. php artisan make lang
: crée le dossier resources/lang
. php artisan make views
: crée le dossier resources/views
. Implémentation de l'analyseur Markdown
// app/Http/routes.php $app->get('/parse', 'App\Http\Controllers\MarkdownController@parse');
// app/Http/Controllers/MarkdownController.php namespace App\Http\Controllers; use Illuminate\Http\Request; use League\CommonMark\CommonMarkConverter; class MarkdownController extends Controller { public function parse(Request $request, CommonMarkConverter $parser) { $text = $request->get('text'); $result = $parser->convertToHtml($text); return ['html' => $result]; } }
Le point final /parse
reçoit du texte de marquage, l'analyse en utilisant league/commonmark
et renvoie le résultat HTML en tant que réponse JSON. L'injection de dépendance gère les objets CommonMarkConverter
et Request
. Les façades (par exemple, Request::get('text')
) peuvent être activées (voir ci-dessous).
Activer les façades, éloquents et middleware
Lumen comprend des façades, un orm éloquent et un middleware, mais ils sont initialement désactivés dans bootstrap/app.php
. Décommente ces lignes pour leur permettre:
// app/Http/routes.php $app->get('/parse', 'App\Http\Controllers\MarkdownController@parse');
Enregistrer les fournisseurs de services supplémentaires en utilisant $app->register('AppServiceProvider');
.
en utilisant l'API
Testez l'API à l'aide d'un outil comme Guzzle:
// app/Http/Controllers/MarkdownController.php namespace App\Http\Controllers; use Illuminate\Http\Request; use League\CommonMark\CommonMarkConverter; class MarkdownController extends Controller { public function parse(Request $request, CommonMarkConverter $parser) { $text = $request->get('text'); $result = $parser->convertToHtml($text); return ['html' => $result]; } }
Conclusion
Lumen fournit une alternative convaincante pour les petits projets, tirant parti des forces de Laravel tout en maintenant un profil léger. Sa facilité d'utilisation et son extensibilité en font un outil précieux pour les microservices et les API. La documentation complète offre plus de détails.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!