Avec le développement d'Internet, le développement d'applications web est devenu un sujet brûlant. Un aspect important de ceci est l'API (Application Programming Interface), qui permet à différentes applications de communiquer et d'interagir entre elles via Internet. Dans la conception d'API, les API ouvertes sont devenues de plus en plus populaires car elles offrent non seulement aux développeurs une plus grande flexibilité et plasticité, mais permettent également une innovation plus large grâce à une collaboration ouverte. Dans ce contexte, cet article présentera la spécification Open API et les méthodes pratiques PHP.
De nos jours, de nombreux développeurs créent des applications sur Internet via des API ouvertes. Bien que l'objectif de l'API reste le même, il existe différentes conventions et spécifications lors de la définition de l'API. Open API est un ensemble de spécifications et d'outils conviviaux pour les développeurs, conçus pour simplifier le développement d'API et la génération de documentation.
La spécification Open API est hébergée par l'Open API Initiative (OAI). Il s'agit d'un ensemble de documents de description d'API écrits en JSON ou YAML qui définissent le fonctionnement, le format d'entrée/sortie, la gestion des erreurs et autres. fonctionnalités de l'API. Les spécifications d'API ouvertes sont de plus en plus privilégiées par les développeurs et les entreprises car elles offrent de nombreux avantages, tels que :
Dans cet article, nous combinerons les méthodes spécifiques d'implémentation de la spécification Open API avec PHP.
Dans cet article, nous utiliserons un exemple simple pour illustrer comment appliquer la spécification Open API à PHP. Pour faciliter la démonstration, nous utiliserons le framework Lumen et l'outil PHP Swagger.
Le framework Lumen est un micro-framework basé sur le framework Laravel, très adapté au développement d'API. Nous pouvons installer le framework Lumen via composer :
composer create-project --prefer-dist laravel/lumen myapi
Swagger PHP est un outil de génération de documentation et de code client pour la spécification Open API, qui fournit une interface est créé pour générer des spécifications Open API, qui peuvent être intégrées de manière transparente au framework Lumen. Nous pouvons installer les dépendances Swagger PHP via composer :
composer require zircote/swagger-php
Une fois l'installation terminée, nous devons créer un fichier swagger.php pour configurer Swagger PHP :
<?php use LaminasConfigFactory; require_once __DIR__ . '/vendor/autoload.php'; $swagger = OpenApiscan(__DIR__ . '/app/Http/Controllers'); header('Content-Type: application/x-yaml'); echo $swagger->toYaml();
Ici, nous La méthode sccan
utilisée d'OpenApi analyse tous les contrôleurs de l'application, génère des spécifications Open API et les convertit au format YAML pour la sortie. Le contrôleur fait ici référence à la classe qui stocke la méthode de traitement des requêtes, et nous démontrerons les détails pertinents dans l'exemple de code suivant. sccan
方法,扫描了应用程序中的所有控制器,生成Open API规范,并将其转换为YAML格式输出。这里的控制器是指存储请求处理方法的类,我们将在接下来的示例代码中演示其相关细节。
在本例中,我们将实现一个简单的TODO应用程序,其中包括列表、创建、更新和删除TODO项目的API操作。
我们首先在路由文件中定义API路由。在Lumen中,路由可以定义在routes/web.php
文件中。在本例中,我们添加以下路由:
$router->get('/tasks', 'TaskController@index'); $router->post('/tasks', 'TaskController@store'); $router->put('/tasks/{id}', 'TaskController@update'); $router->delete('/tasks/{id}', 'TaskController@destroy');
这里,我们定义了四个路由,对应列表、创建、更新、删除四个操作。其中{id}
表示需要URL中传入一个参数,表示对应的TODO项目的id值。
我们接下来需要创建一个控制器来处理请求,控制器是一个包含各种处理方法的类,我们在本例中将在app/Http/Controllers/TaskController.php
中创建。
<?php namespace AppHttpControllers; use IlluminateHttpRequest; use IlluminateDatabaseEloquentModelNotFoundException; use AppModelsTask; class TaskController extends Controller { public function index() { $tasks = Task::all(); return response()->json($tasks); } public function store(Request $request) { $task = new Task; $task->title = $request->input('title'); $task->completed = $request->input('completed'); $task->save(); return response()->json($task); } public function update(Request $request, $id) { try { $task = Task::findOrFail($id); $task->title = $request->input('title'); $task->completed = $request->input('completed'); $task->save(); return response()->json($task); } catch (ModelNotFoundException $e) { return response('Task not found.', 404); } } public function destroy($id) { try { $task = Task::findOrFail($id); $task->delete(); return response(null, 204); } catch (ModelNotFoundException $e) { return response('Task not found.', 404); } } }
上面的代码中,我们使用了Lumen框架中的Model
方式连接数据库,并通过各种HTTP请求方法来执行相应的任务操作。
注意,在幸运的情况下,我在创建控制器过程中并没有遇到问题。 如果你因为某种原因无法使用控制器,那么很可能是因为一些错误的奇怪的原因。
现在我们已经定义了一个简单的API,并应用了Open API规范。我们运行以下命令将生成的规范输出到终端:
php swagger.php
我们的终端输出将是一个YAML文档,其中包含我们的API定义。您可以将其复制并粘贴到任何您想要的文本编辑器中。
接下来我们需要访问Swagger UI,以查看Open API规范是否生成:
composer require --dev zircote/swagger-ui-expressive
安装Swagger UI后,我们可以在bootstrap/app.php
文件中定义Swagger UI路由:
<?php $app->group(['namespace' => 'ZircoteSwaggerExpressiveUi'], function() use ($app) { $app->get('/docs', 'Controller::getDocsAction'); });
在上述配置文件之后,通过/ docs
routes/web.php
. Dans cet exemple, nous ajoutons les routes suivantes : #🎜🎜#rrreee#🎜🎜#Ici, nous définissons quatre routes, correspondant aux quatre opérations de lister, créer, mettre à jour et supprimer. Parmi eux, {id}
signifie qu'un paramètre doit être passé dans l'URL, indiquant la valeur id de l'élément TODO correspondant. #🎜🎜#Model
dans le framework Lumen pour nous connecter à la base de données et effectuer les opérations de tâches correspondantes via diverses méthodes de requête HTTP. #🎜🎜##🎜🎜#Notez qu'avec un peu de chance, je n'ai eu aucun problème pour créer le contrôleur. Si vous ne pouvez pas utiliser le contrôleur pour une raison quelconque, c'est probablement à cause d'une raison étrange et étrange. #🎜🎜#bootstrap/app. php : #🎜🎜#rrreee#🎜🎜#Après le fichier de configuration ci-dessus, l'interface Swagger UI est accessible via la route <code>/docs
pour vérifiez si la définition de l'API s'affiche correctement. #🎜🎜##🎜🎜#Summary#🎜🎜##🎜🎜#Cet article présente les concepts de base de la spécification Open API et comment implémenter la spécification Open API en PHP. En combinant le framework Lumen et l'outil PHP Swagger, nous pouvons facilement créer une API conforme à la spécification et générer la documentation API et le code client correspondants, améliorant ainsi l'efficacité du développement et la gérabilité de l'API. La spécification Open API fournit une méthode de conception d'API et de génération de documents très pratique, qui peut considérablement améliorer la convivialité et la convivialité des API et est propice à une coopération et à une innovation accrues entre les développeurs et les entreprises. #🎜🎜#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!