Maison >développement back-end >tutoriel php >PHP implémente les spécifications et pratiques Open API open source.

PHP implémente les spécifications et pratiques Open API open source.

王林
王林original
2023-06-18 23:58:241602parcourir

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.

Présentation des spécifications de l'API ouverte

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 :

  • Documentation d'API optimisée : les spécifications d'API ouvertes définissent la structure et les métadonnées de l'API, fournissent une prise en charge plus automatisée pour Génération de documentation API, facilitant la création et la maintenance.
  • Conception d'API unifiée : suivre la spécification Open API peut rendre la conception de l'API plus cohérente et standardisée, et améliorer la compatibilité entre les développeurs.
  • Facile à générer du code client : grâce aux spécifications Open API, vous pouvez facilement générer divers codes client, tels que JavaScript, Java, Python, etc.

Dans cet article, nous combinerons les méthodes spécifiques d'implémentation de la spécification Open API avec PHP.

Practice

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.

Installer Lumen

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

Configuring Swagger PHP

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格式输出。这里的控制器是指存储请求处理方法的类,我们将在接下来的示例代码中演示其相关细节。

编写示例API

在本例中,我们将实现一个简单的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请求方法来执行相应的任务操作。

注意,在幸运的情况下,我在创建控制器过程中并没有遇到问题。 如果你因为某种原因无法使用控制器,那么很可能是因为一些错误的奇怪的原因。

生成Open API规范

现在我们已经定义了一个简单的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

Writing Sample API

Dans cet exemple, nous allons implémenter une application TODO simple, qui comprend des opérations API pour répertorier, créer, mettre à jour et supprimer des éléments TODO.

Créer une route

Nous définissons d'abord la route API dans le fichier de route. Dans Lumen, les routes peuvent être définies dans le fichier 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. #🎜🎜#

Créer un contrôleur

#🎜🎜#Nous devons ensuite créer un contrôleur pour gérer la requête. Le contrôleur est une classe qui contient diverses méthodes de traitement. Dans ce cas, nous allons app/Http/Controllers/TaskController.php. #🎜🎜#rrreee#🎜🎜#Dans le code ci-dessus, nous utilisons la méthode 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. #🎜🎜#

Générer la spécification Open API

#🎜🎜#Maintenant, nous avons défini une API simple et appliqué la spécification Open API. Nous exécutons la commande suivante pour afficher la spécification générée sur le terminal : #🎜🎜#rrreee#🎜🎜# Notre sortie de terminal sera un document YAML contenant notre définition d'API. Vous pouvez copier et coller ceci dans n’importe quel éditeur de texte de votre choix. #🎜🎜##🎜🎜#Ensuite, nous devons accéder à l'interface utilisateur de Swagger pour voir si la spécification Open API est générée : #🎜🎜#rrreee#🎜🎜#Après avoir installé l'interface utilisateur de Swagger, nous pouvons accéder à 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn