L5 Swagger-如何为请求正文或响应正文添加示例

问题描述

我正在尝试在文件中定义一些请求正文示例并将该文件链接到实际请求,我看到我们可以使用Swagger $ ref来完成Reusing Examples,但是我找不到正确的{ {1}}语法可以帮助您。

我的代码

L5 Swagger

我正在尝试使用/** * @OA\Post( * operationId="vehicleStore",* tags={"vehicle"},* summary="Store Vehicle - with components and trips (damages & loads)",* description="Store vehicle",* path="/vehicle",* security={{"bearerAuth":{}}},* * @OA\RequestBody( * @OA\JsonContent( * allOf={ * @OA\Schema(ref="#/components/schemas/APIResponse"),* @OA\Schema(ref="#/components/schemas/Customresponse") * },* examples={ @OA\Examples( externalValue="http://api.nytimes.com/svc/search/v2/articlesearch.json",summary="1" ) } * ) * ),* * @OA\Response( * response="200",* description="Successful",* @OA\JsonContent() * ),* ) * * @return JsonResponse * */ ,如果有人可以举一个例子说明我们如何做到这一点,那将很棒

更新

我尝试过类似的事情

@OA\Examples

然后

/**
 *
 *      @OA\Examples(
 *        summary="VehicleStore",*        example = "VehicleStore",*       value = {
 *              "result": null,*              "message": "Unauthorized,you don't have access to this content,Invalid token.",*              "status": 401
 *         },*      )
 */

在ui中的显示示例:VehicleStore,但是 /** * @OA\Post( * operationId="vehicleStore",* * @OA\RequestBody( * @OA\JsonContent( * allOf={ * @OA\Schema(ref="#/components/schemas/APIResponse"),* @OA\Schema(ref="#/components/schemas/CustomrequestBody") * },* examples = { * @OA\Schema( ref="#/components/examples/VehicleStore") * * } * * ) * ),* ) * * @return JsonResponse * */ 在ui中仍然为空

here without the json example

解决方法

我发现正确的L5语法也可以使用refs来做多个示例:

所以首先我将示例定义为:

/**
 *      @OA\Examples(
 *        summary="VehicleStoreEx1",*        example = "VehicleStoreEx1",*       value = {
*           "name": "vehicle 1"
*         },*      )
*/

/**
 *      @OA\Examples(
 *        summary="VehicleStoreEx2",*        example = "VehicleStoreEx2",*       value = {
 *              "name": "vehicle 1",*              "model": "Tesla"
 *         },*      )
 */

然后我定义了一个请求主体,因为我需要为一个请求提供多个示例,我认为如果任何人都需要对多个示例进行响应,那么响应也可以完成相同的事情,因此我的请求主体为:

/**
 * @OA\RequestBody(
 *     request="VehicleStoreRequestBody",*     description="Pet object that needs to be added to the store",*     required=true,*     @OA\JsonContent(
 *        allOf={
 *           @OA\Schema(ref="#/components/schemas/APIResponse"),*           @OA\Schema(ref="#/components/schemas/CustomRequestBody")
 *        },*       examples = {
 *          "example_1" : @OA\Schema( ref="#/components/examples/VehicleStoreEx1"),*          "example_2" : @OA\Schema( ref="#/components/examples/VehicleStoreEx2"),*      }
 *    )
 * )
 */

然后我将请求主体链接到请求,如下所示:

/**
* @OA\Post(
 *     operationId="vehicleStore",*     tags={"vehicle"},*     summary="Store Vehicle - with components and trips (damages & loads)",*     description="Store vehicle",*     path="/vehicle",*     security={{"bearerAuth":{}}},*    requestBody={"$ref": "#/components/requestBodies/VehicleStoreRequestBody"},*     @OA\Response(
 *         response="200",*         description="Successful",*          @OA\JsonContent()
 *      ),* )
 *
 * @return JsonResponse
*
 */

并在api-docs.json中生成了流动的对象

        "examples": {
            "VehicleStoreEx1": {
                "summary": "VehicleStoreEx1","value": {
                    "name": "vehicle 1"
                }
            },"VehicleStoreEx2": {
                "summary": "VehicleStoreEx2","value": {
                    "name": "vehicle 1","model": "Tesla"
                }
            }
        },"requestBodies": {
            "VehicleStoreRequestBody": {
                "description": "Pet object that needs to be added to the store","required": true,"content": {
                    "application/json": {
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/components/schemas/APIResponse"
                                },{
                                    "$ref": "#/components/schemas/CustomRequestBody"
                                }
                            ]
                        },"examples": {
                            "example_1": {
                                "$ref": "#/components/examples/VehicleStoreEx1"
                            },"example_2": {
                                "$ref": "#/components/examples/VehicleStoreEx2"
                            }
                        }
                    }
                }
            }
        },

希望这将有助于任何人搜索如何使用多个示例进行响应或请求