Skip to content
qnnp

[Webman] qnnp/webman-route

发布于: | 没有评论 | 分类:

不再更新!

建议配合第三方api文档管理工具(如:apifox,postman)进行开发

实现文档先行,前后端或者多端根据文档同步开发,使用api管理工具测试接口路由等

qnnp/webman-route 是一个基于 PHP8 注解开发的一个 Webman 插件。

快速开始
0
请对此提供反馈x

Command line
composer require qnnp/webman-route

示例
0
请对此提供反馈x

0
请对此提供反馈x
PHP
<?php
# file:/app/api/controller/index.php

namespace app\api\controller

use Qnnp\WebmanRoute\Module\Result;use support\Request;
use support\Response;
use Throwable;
use Qnnp\WebmanRoute\Attributes\Route;

class Index {
  #[Route(
    './',                               // 路由 /api/test
    middleware: [RequireLogin::class],  // 加载中间件
    get: [                              // GET 方法各项参数
      'orderBy' => [
        get::schema => [
          schema::enum => ['status', 'last_active_time', 'created_at']
        ]
      ],
      'order'   => [
        get::schema  => [
          schema::enum => ['asc', 'desc']
        ],
        get::example => 'desc',
      ],
      'page'    => [
        get::example => 1,
        get::schema  => ['type' => 'integer']
      ],
      'limit'   => [
        get::example => 10,
        get::schema  => [
          schema::type => 'integer'
        ]
      ],
    ],
    tags: ['测试分组'],                  // 路由分组
    summary: '测试路由"/api/test"',      // 路由描述
  )]
  public function test(Request $request):Response {
    return Result::json('success');
  }
}

SwaggerUI 显示效果

OpenAPI 结果

0
请对此提供反馈x
JSON
{
  ...,
  
  "paths": {
    "/api/test": {
      "get": {
        "summary": "测试路由\"/api/test\"",
        "description": "",
        "responses": {
          "default": {
            "description": ""
          }
        },
        "tags": [
          "测试分组"
        ],
        "parameters": [
          {
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "status",
                "last_active_time",
                "created_at"
              ]
            },
            "name": "orderBy"
          },
          {
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            },
            "example": "desc",
            "name": "order"
          },
          {
            "in": "query",
            "schema": {
              "type": "integer"
            },
            "example": 1,
            "name": "page"
          },
          {
            "in": "query",
            "schema": {
              "type": "integer"
            },
            "example": 10,
            "name": "limit"
          }
        ]
      }
    }
  }
}

5 2 投票数
文章评分
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论

0
希望看到您的想法,请您发表评论x