인터넷의 발달과 함께 웹 애플리케이션 개발이 화두가 되었습니다. 여기서 중요한 측면은 다양한 애플리케이션이 인터넷을 통해 서로 통신하고 상호 작용할 수 있도록 하는 API(애플리케이션 프로그래밍 인터페이스)입니다. API 설계에서 개방형 API는 개발자에게 더 큰 유연성과 가소성을 제공할 뿐만 아니라 개방형 협업을 통해 더 광범위한 혁신을 가능하게 하기 때문에 점점 인기를 얻고 있습니다. 이러한 맥락에서 이 기사에서는 Open API 사양과 PHP의 실용적인 방법을 소개합니다.
요즘에는 많은 개발자가 오픈 API를 통해 인터넷에서 애플리케이션을 구축합니다. API의 목적은 동일하지만 API를 정의할 때 다른 규칙과 사양이 있습니다. Open API는 API 개발 및 문서 생성을 단순화하도록 설계된 개발자 친화적인 사양 및 도구 세트입니다.
Open API 사양은 OAI(Open API Initiative)에서 호스팅하며 API의 작업, 입력/출력 형식, 오류 처리 및 기타 특성을 정의하는 JSON 또는 YAML로 작성된 API 설명 문서 세트입니다. 개방형 API 사양은 다음과 같은 많은 이점을 제공하기 때문에 점점 더 개발자와 기업의 선호를 받고 있습니다.
이 기사에서는 Open API 사양을 PHP와 구현하는 구체적인 방법을 결합합니다.
이 기사에서는 간단한 예를 사용하여 Open API 사양을 PHP에 적용하는 방법을 설명합니다. 데모의 편의를 위해 Lumen 프레임워크와 Swagger PHP 도구를 사용하겠습니다.
Lumen 프레임워크는 Laravel 프레임워크를 기반으로 한 마이크로 프레임워크로 API 개발에 매우 적합합니다. Composer를 통해 Lumen 프레임워크를 설치할 수 있습니다.
composer create-project --prefer-dist laravel/lumen myapi
Swagger PHP는 Open API 사양에 대한 문서 및 클라이언트 코드를 생성하는 도구이며 Lumen과 함께 사용할 수 있는 Open API 사양을 생성하기 위한 인터페이스를 제공합니다. 원활하게 통합됩니다. Composer를 통해 Swagger PHP 종속성을 설치할 수 있습니다.
composer require zircote/swagger-php
설치가 완료된 후 Swagger PHP를 구성하기 위해 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();
여기에서는 OpenApi의 sccan
메서드를 사용합니다. 애플리케이션의 모든 컨트롤러를 스캔하고 Open API 사양을 생성한 후 YAML 형식 출력으로 변환했습니다. 여기서 컨트롤러는 요청 처리 방법을 저장하는 클래스를 의미하며 다음 샘플 코드에서 관련 세부 정보를 보여줍니다. 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
파일에서 경로를 정의할 수 있습니다. 이 예에서는 다음 경로를 추가합니다. 🎜rrreee🎜여기에서는 나열, 생성, 업데이트 및 삭제의 네 가지 작업에 해당하는 네 가지 경로를 정의합니다. 그 중 {id}
는 해당 TODO 항목의 id 값을 나타내는 매개변수가 URL에 전달되어야 함을 의미합니다. 🎜app/Http에 컨트롤러를 만듭니다. / Controllers/TaskController.php
에 생성됩니다. 🎜rrreee🎜위 코드에서는 Lumen 프레임워크의 Model
메서드를 사용하여 데이터베이스에 연결하고 다양한 HTTP 요청 메서드를 통해 해당 작업 작업을 수행합니다. 🎜🎜 운 좋게도 컨트롤러를 만드는 데 아무런 문제가 없었습니다. 어떤 이유로 컨트롤러를 사용할 수 없다면 아마도 이상한 이유 때문일 것입니다. 🎜bootstrap/app.php
파일에서 Swagger UI 경로를 정의할 수 있습니다. 🎜rrreee 🎜위 구성 파일 이후 /docs
경로를 통해 Swagger UI 인터페이스에 액세스하여 API 정의가 올바르게 표시되는지 확인할 수 있습니다. 🎜🎜요약🎜🎜이 글에서는 Open API 사양의 기본 개념과 PHP에서 Open API 사양을 구현하는 방법을 소개합니다. Lumen 프레임워크와 Swagger PHP 도구를 결합하면 사양을 준수하는 API를 쉽게 생성하고 해당 API 문서 및 클라이언트 코드를 생성할 수 있으므로 API의 개발 효율성과 관리 효율성이 향상됩니다. Open API 사양은 매우 편리한 API 설계 및 문서 생성 방법을 제공하여 API의 유용성과 가용성을 크게 향상시킬 수 있으며 개발자와 기업 간의 협력과 혁신을 촉진하는 데 도움이 됩니다. 🎜위 내용은 PHP는 오픈 소스 Open API 사양 및 관행을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!