> 백엔드 개발 > PHP 튜토리얼 > PHP는 오픈 소스 Open API 사양 및 관행을 구현합니다.

PHP는 오픈 소스 Open API 사양 및 관행을 구현합니다.

王林
풀어 주다: 2023-06-19 06:26:01
원래의
1597명이 탐색했습니다.

인터넷의 발달과 함께 웹 애플리케이션 개발이 화두가 되었습니다. 여기서 중요한 측면은 다양한 애플리케이션이 인터넷을 통해 서로 통신하고 상호 작용할 수 있도록 하는 API(애플리케이션 프로그래밍 인터페이스)입니다. API 설계에서 개방형 API는 개발자에게 더 큰 유연성과 가소성을 제공할 뿐만 아니라 개방형 협업을 통해 더 광범위한 혁신을 가능하게 하기 때문에 점점 인기를 얻고 있습니다. 이러한 맥락에서 이 기사에서는 Open API 사양과 PHP의 실용적인 방법을 소개합니다.

Open API 사양 개요

요즘에는 많은 개발자가 오픈 API를 통해 인터넷에서 애플리케이션을 구축합니다. API의 목적은 동일하지만 API를 정의할 때 다른 규칙과 사양이 있습니다. Open API는 API 개발 및 문서 생성을 단순화하도록 설계된 개발자 친화적인 사양 및 도구 세트입니다.

Open API 사양은 OAI(Open API Initiative)에서 호스팅하며 API의 작업, 입력/출력 형식, 오류 처리 및 기타 특성을 정의하는 JSON 또는 YAML로 작성된 API 설명 문서 세트입니다. 개방형 API 사양은 다음과 같은 많은 이점을 제공하기 때문에 점점 더 개발자와 기업의 선호를 받고 있습니다.

  • 최적화된 API 문서: 개방형 API 사양은 API 구조와 메타데이터를 정의하여 API 문서 생성을 위한 더 많은 기능을 제공합니다. 자동화 지원을 통해 더 쉽게 만들 수 있습니다. 생성하고 유지하는 것입니다.
  • 통합 API 디자인: Open API 사양을 따르면 API 디자인을 더욱 일관되고 표준화하여 개발자 간의 호환성을 향상시킬 수 있습니다.
  • 손쉬운 클라이언트 코드 생성: Open API 사양을 사용하면 JavaScript, Java, Python 등 다양한 클라이언트 코드를 쉽게 생성할 수 있습니다.

이 기사에서는 Open API 사양을 PHP와 구현하는 구체적인 방법을 결합합니다.

Practice

이 기사에서는 간단한 예를 사용하여 Open API 사양을 PHP에 적용하는 방법을 설명합니다. 데모의 편의를 위해 Lumen 프레임워크와 Swagger PHP 도구를 사용하겠습니다.

Install Lumen

Lumen 프레임워크는 Laravel 프레임워크를 기반으로 한 마이크로 프레임워크로 API 개발에 매우 ​​적합합니다. Composer를 통해 Lumen 프레임워크를 설치할 수 있습니다.

composer create-project --prefer-dist laravel/lumen myapi
로그인 후 복사

Swagger PHP 구성

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

编写示例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

샘플 API 작성

이 예에서는 TODO 항목 나열, 생성, 업데이트 및 삭제를 위한 API 작업이 포함된 간단한 TODO 애플리케이션을 구현합니다.

경로 만들기

먼저 경로 파일에서 API 경로를 정의합니다. Lumen에서는 routes/web.php 파일에서 경로를 정의할 수 있습니다. 이 예에서는 다음 경로를 추가합니다. 🎜rrreee🎜여기에서는 나열, 생성, 업데이트 및 삭제의 네 가지 작업에 해당하는 네 가지 경로를 정의합니다. 그 중 {id}는 해당 TODO 항목의 id 값을 나타내는 매개변수가 URL에 전달되어야 함을 의미합니다. 🎜

컨트롤러 만들기

🎜다음으로 요청을 처리할 컨트롤러를 만들어야 합니다. 컨트롤러는 다양한 처리 방법이 포함된 클래스입니다. 이 예에서는 app/Http에 컨트롤러를 만듭니다. / Controllers/TaskController.php에 생성됩니다. 🎜rrreee🎜위 코드에서는 Lumen 프레임워크의 Model 메서드를 사용하여 데이터베이스에 연결하고 다양한 HTTP 요청 메서드를 통해 해당 작업 작업을 수행합니다. 🎜🎜 운 좋게도 컨트롤러를 만드는 데 아무런 문제가 없었습니다. 어떤 이유로 컨트롤러를 사용할 수 없다면 아마도 이상한 이유 때문일 것입니다. 🎜

Open API 사양 생성

🎜이제 간단한 API를 정의하고 Open API 사양을 적용했습니다. 다음 명령을 실행하여 생성된 사양을 터미널에 출력합니다. 🎜rrreee🎜 터미널 출력은 API 정의가 포함된 YAML 문서가 됩니다. 이를 복사하여 원하는 텍스트 편집기에 붙여넣을 수 있습니다. 🎜🎜다음으로 Swagger UI에 액세스하여 Open API 사양이 생성되었는지 확인해야 합니다. 🎜rrreee🎜Swagger UI를 설치한 후 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿