将输入作为阵列在swagger中工作

问题描述 投票:2回答:1

我的swagger文档有以下代码。在这里,我试图创建一个API,我想把输入作为一个对象数组。到目前为止,我正在做以下事情。

{
    method: 'POST',
    path: '/api/Route',
    handler: function(request, reply) {
        //some operations
        reply('Success');
    },

    config: {
        description: 'Create a Route',
        tags: ['api', 'user'],
        auth: 'UserAuth',
        validate: {
            payload: {
                "array": [{
                        userId: Joi.string().trim().required(),
                        status: Joi.number().required()
                    },
                    {
                        userId: Joi.string().trim().required(),
                        status: Joi.number().required()
                    },
                    {
                        userId: Joi.string().trim().required(),
                        status: Joi.number().required()
                    }
                ]
            }
        },
        plugins: {
            'hapi-swagger': {
                responseMessages: swaggerDefaultResponseMessages
            }
        }
    }
}

所以,当我运行上面的代码时,swagger会创建像这样的文档。 this is a link to the image。所以请任何人都可以告诉我为什么我没有在swagger文档中获取整个数组而只获得数组的一个元素。我也看到了以下question但无法理解他们在哪个文件中进行这些更改。有人可以帮忙吗?提前致谢。

swagger swagger-ui
1个回答
2
投票

你可以使用Joi的数组验证。然后在输入中,您可以将数组传递给它。为此,您只需要在有效负载中编写以下代码,而不是当前正在编写的代码。

payload: {
         userData: Joi.array().items({
             userName: Joi.string(),
             status: Joi.string()
         })
     }

之后你大摇大摆的文档看起来像这样。

enter image description here

userData是您的对象数组。你可以给出如下的输入对象数组。

"userData": [{
             "userName": "string", // objects
             "status": "string"
         },
         {
             "userName": "string", // objects this way you can add more
             "status": "string"
         }
     ]
© www.soinside.com 2019 - 2024. All rights reserved.