l5-swagger/swagger-php - 将组件添加到块中使其从输出中消失
l5-swagger/swagger-php - adding component to block makes it dissapear from the output
如果我将此响应添加到我的定义中:
@OA\Response(
response="default",
description="unexpected error",
@OA\JsonContent(ref="#/components/schemas/ErrorModel"),
@OA\XmlContent(ref="#/components/schemas/ErrorModel"),
@OA\MediaType(
mediaType="text/xml",
@OA\Schema(ref="#/components/schemas/ErrorModel")
),
@OA\MediaType(
mediaType="text/html",
@OA\Schema(ref="#/components/schemas/ErrorModel")
)
)
然后我将 Schema 放在下面:
/**
* @OA\Schema(
* schema="ErrorModel",
* required={"code", "message"},
* @OA\Property(
* property="code",
* type="integer",
* format="int32"
* ),
* @OA\Property(
* property="message",
* type="string"
* )
* )
*/
命令:php artisan l5-swagger:generate 没有错误,但是包含组件的响应定义的块不再包含在 json 中,而是包含在组件的架构中是吗?
我是否做了一些非常明显的错误,因为到目前为止我对图书馆的经验是,如果你做错了什么,它通常会告诉你。
如果这是一个新项目,则更改是您现在使用的是 swagger-php V4。在版本 4 中,分析器代码使用反射。这样做是为了可以使用注释或 PHP 8 个属性。
一个缺点是不再检测到 stand-alone 文档块,因为没有反射来访问它们。
在你的情况下,我认为有两个单独的 /** */
块意味着只找到最后一个。
一种解决方法是在单个 /** */
块中将所有注释放在 class 之前。
对于这种情况,另一种选择是使用(未使用的)虚拟 classes。
在这里,假设第一个注释有单独的响应 class,添加 class ErrorModel {}
你的架构也应该有效。
这同样适用于其他顶级注释,如@OA\Info 或其他。
如果我将此响应添加到我的定义中:
@OA\Response(
response="default",
description="unexpected error",
@OA\JsonContent(ref="#/components/schemas/ErrorModel"),
@OA\XmlContent(ref="#/components/schemas/ErrorModel"),
@OA\MediaType(
mediaType="text/xml",
@OA\Schema(ref="#/components/schemas/ErrorModel")
),
@OA\MediaType(
mediaType="text/html",
@OA\Schema(ref="#/components/schemas/ErrorModel")
)
)
然后我将 Schema 放在下面:
/**
* @OA\Schema(
* schema="ErrorModel",
* required={"code", "message"},
* @OA\Property(
* property="code",
* type="integer",
* format="int32"
* ),
* @OA\Property(
* property="message",
* type="string"
* )
* )
*/
命令:php artisan l5-swagger:generate 没有错误,但是包含组件的响应定义的块不再包含在 json 中,而是包含在组件的架构中是吗?
我是否做了一些非常明显的错误,因为到目前为止我对图书馆的经验是,如果你做错了什么,它通常会告诉你。
如果这是一个新项目,则更改是您现在使用的是 swagger-php V4。在版本 4 中,分析器代码使用反射。这样做是为了可以使用注释或 PHP 8 个属性。
一个缺点是不再检测到 stand-alone 文档块,因为没有反射来访问它们。
在你的情况下,我认为有两个单独的 /** */
块意味着只找到最后一个。
一种解决方法是在单个 /** */
块中将所有注释放在 class 之前。
对于这种情况,另一种选择是使用(未使用的)虚拟 classes。
在这里,假设第一个注释有单独的响应 class,添加 class ErrorModel {}
你的架构也应该有效。
这同样适用于其他顶级注释,如@OA\Info 或其他。