PHP7.3需要使用swager3才能正常工作,以下是配置过程,最新版的swagger4.8实际是不能在php7.3使用而是需要php8.1或以上版本。
- 设置composer的配置版本文件(composer.json),内容如下
{
"require": {
"zircote/swagger-php": "^3"
}
}
2. 通过composer命令安装swagger-php3,注意要删除目录下的composer.lock文件
# composer install
安装成功后,在当前目录下会新一个vendor目录,swagger在这个目录:
./vendor/zircote/swagger-php
3. 在vendor目录的同级建立待扫描php文件Myapi.php
内容如下:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use OpenApi\Annotations as OA;
/**
* @OA\Info(
* title="API文档",
* version="1.0.0"
* )
*/
/**
* @OA\Get(
* path="/api/users",
* summary="获取用户列表",
* @OA\Response(
* response="200",
* description="成功",
* @OA\JsonContent(
* type="array",
* @OA\Items(
* @OA\Property(property="id", type="integer"),
* @OA\Property(property="name", type="string"),
* @OA\Property(property="email", type="string")
* )
* )
* )
* )
*/
function getUsers()
{
// 实际处理获取用户列表的逻辑
}
$openapi = \OpenApi\scan(__FILE__);
header('Content-Type: application/json');
echo $openapi->toJson();
最后测试swagger扫描Myapi.php文件后生成的json文件:
#php Myapi.php
在这里应该能在命令行状态输出一个json结构的内容了,如下:
{
"openapi": "3.0.0",
"info": {
"title": "API文档",
"version": "1.0.0"
},
"paths": {
"/api/users": {
"get": {
"summary": "获取用户列表",
"operationId": "7bd7c7d37c7765793d354dba6a0679b5",
"responses": {
"200": {
"description": "成功",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
}
},
"type": "object"
}}}}}}}}}}