【问题标题】:Warning: Unable to merge @OA\Post(), Zircote, PHP警告:无法合并@OA\\Post()、Zircote、PHP
【发布时间】:2023-01-27 19:21:02
【问题描述】:

我正在使用 zircote/swagger-php,但出现此错误:

Warning: Unable to merge @OA\Post() ...

不明白为什么,它对最终的 swagger.json 做了一些不好的事情,因为有些模式无法识别。喜欢:

Definition was declared but never used in document

让我们看一些代码:


    /**
     * @OA\POST(
     *     path="/delete",
     *     summary="Delete Evidences Request",
     *     description="Delete Evidences Request",
     *     tags={"Evidences"},
     *     @OA\RequestBody(
     *         @OA\MediaType(
     *             mediaType="application/json",
     *             @OA\Schema(ref="#/components/schemas/DeleteEvidencesRequest")
     *         )
     *     ),
     *     @OA\Response(
     *          response=200,
     *          description="JSON API response",
     *          @OA\MediaType(
     *             mediaType="application/json",
     *             @OA\Schema(ref="#/components/schemas/DeleteEvidencesResponse")
     *         )
     *     )
     * )
     */ 
    protected function Delete(array &$data)
    {
        if (!isset($data['id'])) {
            echo $this->Response()->setErrorMessage("Evidence ID is required");
            return;
        }

        $evidence = new Evidence($data['id'], $this->_organization);
        $this->_evidenceDLL->Delete($evidence);
        echo $this->Response()->setStatus($evidence->_response)->setMessage($evidence->_message);
    }

然后,在 \Requests\Evidences\delete.inc 中:

<?php 

use OpenApi\Annotations as OA;

/**
 * @OA\Schema(
 *      schema="DeleteEvidencesRequest",
 *      title="Delete Evidences Request",
 *      @OA\Property(
 *          property="object",
 *          type="string",
 *          example="evidence"
 *      ),
 *      @OA\Property(
 *          property="action",
 *          type="string",
 *          example="delete"
 *      ),
 *      @OA\Property(
 *          property="data",
 *          type="object",
 *              @OA\Items(
 *                  @OA\Property(
 *                      property="id",
 *                      type="string",
 *                      example="60"
 *                  ),
 *                  @OA\Property(
 *                      property="entity_id",
 *                      type="string",
 *                      example="177"
 *                  ),
  *                 @OA\Property(
 *                      property="entity_type",
 *                      type="string",
 *                      example="task"
 *                  ),
 *              ),
 *      ),
 *      @OA\Property(
 *          property="organization",
 *          type="string",
 *          example="1"
 *      ),
 *      @OA\Property(
 *          property="site",
 *          oneOf={
 *              @OA\Schema(type="string"),
 *              @OA\Schema(type="boolean"),
 *          },
 *          example="1 | false"
 *      )
 * )
 */
class DeleteEvidencesRequest
{

}

如您所见,名称是正确的,但由于某种原因,它没有出现在 swagger 编辑器中:

唯一显示的是来自相同的另一个模式。 难道我做错了什么?

提前致谢!

【问题讨论】:

    标签: php swagger


    【解决方案1】:

    “无法合并@OAPost() ...”

    这可能是因为重复的“path="/delete"'。检查所有“路径”。

    【讨论】:

      猜你喜欢
      • 2014-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 2011-07-16
      • 2011-09-25
      相关资源
      最近更新 更多