Heim > Backend-Entwicklung > PHP-Tutorial > PHP implementiert Open-Source-Open-API-Spezifikationen und -Praktiken.

PHP implementiert Open-Source-Open-API-Spezifikationen und -Praktiken.

王林
Freigeben: 2023-06-19 06:26:01
Original
1606 Leute haben es durchsucht

Mit der Entwicklung des Internets ist die Entwicklung von Webanwendungen zu einem heißen Thema geworden. Ein wichtiger Aspekt dabei ist die API (Application Programming Interface), die es verschiedenen Anwendungen ermöglicht, über das Internet miteinander zu kommunizieren und zu interagieren. Im API-Design erfreuen sich offene APIs immer größerer Beliebtheit, da sie Entwicklern nicht nur mehr Flexibilität und Plastizität bieten, sondern durch offene Zusammenarbeit auch umfassendere Innovationen ermöglichen. In diesem Zusammenhang werden in diesem Artikel die Open API-Spezifikation und praktische PHP-Methoden vorgestellt.

Übersicht über offene API-Spezifikationen

Heutzutage erstellen viele Entwickler Anwendungen im Internet über offene APIs. Obwohl der Zweck der API derselbe bleibt, gibt es bei der Definition der API unterschiedliche Konventionen und Spezifikationen. Open API ist eine Reihe entwicklerfreundlicher Spezifikationen und Tools, die die API-Entwicklung und Dokumentationserstellung vereinfachen sollen.

Die Open API-Spezifikation wird von der Open API Initiative (OAI) gehostet. Dabei handelt es sich um eine Reihe von API-Beschreibungsdokumenten, die in JSON oder YAML geschrieben sind und den Betrieb, das Eingabe-/Ausgabeformat, die Fehlerbehandlung und andere Merkmale der API definieren. Offene API-Spezifikationen werden von Entwicklern und Unternehmen zunehmend bevorzugt, da sie viele Vorteile bieten, wie zum Beispiel:

  • Optimierte API-Dokumentation: Offene API-Spezifikationen definieren die API-Struktur und Metadaten und bieten so mehr Automatisierungsunterstützung für die Generierung der API-Dokumentation, was sie einfacher macht zu erstellen und zu pflegen.
  • Einheitliches API-Design: Die Einhaltung der Open API-Spezifikation kann das API-Design konsistenter und standardisierter machen und so die Kompatibilität zwischen Entwicklern verbessern.
  • Einfach zu generierender Client-Code: Mit Open API-Spezifikationen können Sie problemlos verschiedene Client-Codes generieren, z. B. JavaScript, Java, Python usw.

In diesem Artikel kombinieren wir die spezifischen Methoden zur Implementierung der Open API-Spezifikation mit PHP.

Übung

In diesem Artikel veranschaulichen wir anhand eines einfachen Beispiels, wie die Open API-Spezifikation in PHP angewendet wird. Zur Vereinfachung der Demonstration verwenden wir das Lumen-Framework und das Swagger-PHP-Tool.

Lumen installieren

Das Lumen-Framework ist ein Mikro-Framework, das auf dem Laravel-Framework basiert und sich sehr gut für die Entwicklung von APIs eignet. Wir können das Lumen-Framework über Composer installieren:

composer create-project --prefer-dist laravel/lumen myapi
Nach dem Login kopieren

Swagger PHP konfigurieren

Swagger PHP ist ein Tool zum Generieren von Dokumentation und Client-Code für Open API-Spezifikationen. Es bietet eine Schnittstelle zum Generieren von Open API-Spezifikationen, die mit Lumen The Framework verwendet werden können integriert sich nahtlos. Wir können Swagger-PHP-Abhängigkeiten über Composer installieren:

composer require zircote/swagger-php
Nach dem Login kopieren

Nachdem die Installation abgeschlossen ist, müssen wir eine swagger.php-Datei erstellen, um Swagger PHP zu konfigurieren:

<?php
use LaminasConfigFactory;

require_once __DIR__ . '/vendor/autoload.php';

$swagger = OpenApiscan(__DIR__ . '/app/Http/Controllers');

header('Content-Type: application/x-yaml');
echo $swagger->toYaml();
Nach dem Login kopieren

Hier verwenden wir die sccan-Methode von OpenApi. Alle Controller in der Anwendung wurden gescannt, offene API-Spezifikationen generiert und in die Ausgabe im YAML-Format konvertiert. Der Controller bezieht sich hier auf die Klasse, die die Anforderungsverarbeitungsmethode speichert, und wir werden die relevanten Details im folgenden Beispielcode demonstrieren. 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');
Nach dem Login kopieren

这里,我们定义了四个路由,对应列表、创建、更新、删除四个操作。其中{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);
        }
    }
}
Nach dem Login kopieren

上面的代码中,我们使用了Lumen框架中的Model方式连接数据库,并通过各种HTTP请求方法来执行相应的任务操作。

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

生成Open API规范

现在我们已经定义了一个简单的API,并应用了Open API规范。我们运行以下命令将生成的规范输出到终端:

php swagger.php
Nach dem Login kopieren

我们的终端输出将是一个YAML文档,其中包含我们的API定义。您可以将其复制并粘贴到任何您想要的文本编辑器中。

接下来我们需要访问Swagger UI,以查看Open API规范是否生成:

composer require --dev zircote/swagger-ui-expressive
Nach dem Login kopieren

安装Swagger UI后,我们可以在bootstrap/app.php文件中定义Swagger UI路由:

<?php

$app->group(['namespace' => 'ZircoteSwaggerExpressiveUi'], function() use ($app) {
    $app->get('/docs', 'Controller::getDocsAction');
});
Nach dem Login kopieren

在上述配置文件之后,通过/ docs

Beispiel-API schreiben

In diesem Beispiel implementieren wir eine einfache TODO-Anwendung, die API-Operationen zum Auflisten, Erstellen, Aktualisieren und Löschen von TODO-Elementen umfasst.

Route erstellen

Wir definieren zunächst die API-Route in der Routendatei. In Lumen können Routen in der Datei routes/web.php definiert werden. In diesem Beispiel fügen wir die folgenden Routen hinzu: 🎜rrreee🎜Hier definieren wir vier Routen, die den vier Operationen Auflisten, Erstellen, Aktualisieren und Löschen entsprechen. Unter diesen bedeutet {id}, dass ein Parameter in der URL übergeben werden muss, der den ID-Wert des entsprechenden TODO-Elements angibt. 🎜

Controller erstellen

🎜Als nächstes müssen wir einen Controller erstellen, um die Anfrage zu verarbeiten. Ein Controller ist eine Klasse, die verschiedene Verarbeitungsmethoden enthält. In diesem Beispiel erstellen wir einen Controller in app/Http / Erstellt in Controllers/TaskController.php. 🎜rrreee🎜Im obigen Code verwenden wir die Methode Model im Lumen-Framework, um eine Verbindung zur Datenbank herzustellen und entsprechende Aufgabenvorgänge über verschiedene HTTP-Anforderungsmethoden auszuführen. 🎜🎜Beachten Sie, dass ich mit etwas Glück keine Probleme beim Erstellen des Controllers hatte. Wenn Sie den Controller aus irgendeinem Grund nicht verwenden können, liegt das wahrscheinlich an einem seltsamen Grund. 🎜

Open API-Spezifikation generieren

🎜Jetzt haben wir eine einfache API definiert und die Open API-Spezifikation angewendet. Wir führen den folgenden Befehl aus, um die generierte Spezifikation an das Terminal auszugeben: 🎜rrreee🎜 Unsere Terminalausgabe ist ein YAML-Dokument, das unsere API-Definition enthält. Sie können dies kopieren und in einen beliebigen Texteditor einfügen. 🎜🎜Als nächstes müssen wir auf Swagger UI zugreifen, um zu sehen, ob die Open API-Spezifikation generiert wird: 🎜rrreee🎜Nach der Installation von Swagger UI können wir die Swagger UI-Route in der Datei bootstrap/app.php definieren: 🎜rrreee 🎜Nach der obigen Konfigurationsdatei kann über die Route /docs auf die Swagger-UI-Schnittstelle zugegriffen werden, um zu überprüfen, ob die API-Definition korrekt angezeigt wird. 🎜🎜Zusammenfassung🎜🎜In diesem Artikel werden die Grundkonzepte der Open API-Spezifikation und die Implementierung der Open API-Spezifikation in PHP vorgestellt. Durch die Kombination des Lumen-Frameworks und des Swagger-PHP-Tools können wir auf einfache Weise eine API erstellen, die der Spezifikation entspricht, und entsprechende API-Dokumentation und Client-Code generieren, wodurch die Entwicklungseffizienz und Verwaltbarkeit der API verbessert wird. Die Open API-Spezifikation bietet eine sehr praktische API-Design- und Dokumentgenerierungsmethode, die die Benutzerfreundlichkeit und Benutzerfreundlichkeit von APIs erheblich verbessern kann und die weitere Zusammenarbeit und Innovation zwischen Entwicklern und Unternehmen fördert. 🎜

Das obige ist der detaillierte Inhalt vonPHP implementiert Open-Source-Open-API-Spezifikationen und -Praktiken.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage