如何在swagger中将空值传递给查询参数?

如何在swagger中将空值传递给查询参数?,swagger,swagger-ui,Swagger,Swagger Ui,我正在尝试访问类似的url。但是,q1有时不会有任何与之关联的值,但需要它来访问服务()。如何通过swagger ui JSON实现这一点。我尝试过使用allowEmptyValue选项,但似乎不起作用 请在下面找到我使用allowEmptyValue选项尝试的JSON示例 { "path": "/service1.do", "operations": [{ "method": "GET", "type": "void", "par

我正在尝试访问类似的url。但是,q1有时不会有任何与之关联的值,但需要它来访问服务()。如何通过swagger ui JSON实现这一点。我尝试过使用allowEmptyValue选项,但似乎不起作用

请在下面找到我使用allowEmptyValue选项尝试的JSON示例

{
    "path": "/service1.do",
    "operations": [{
        "method": "GET",
        "type": "void",
        "parameters": [{
                "name": "q1",
                "in" : "query",
                "required": false,
                "type": "string",
                "paramType": "query",
                "allowEmptyValue": true
            },{
                "name": "q2",
                "in" : "query",
                "required": true,
                "type": "string",
                "paramType": "query",
            }


        ],
        "responseMessages": [{
            "code": 200,
            "responseModel": "/successResponseModel"
        }
}
当一个空值传递给q1时,swagger将URL框定为。在URL()中是否包含包含空值的q1


任何帮助都将不胜感激。

看来您的问题是一个已知的招摇过市用户界面问题,尚未解决

作为解决方法,您可以执行以下操作之一

选项1:指定默认值。

此选项与swagger ui无关。在ws实现中,您必须添加一个默认值(在您的示例中为“”),以便在未添加“q1”时使用。任何REST框架都有此选项

从ws-implementation的角度来看,这个应该存在于您的ws中,除非您在未添加“q1”时有另一个服务被触发。(在大多数情况下,这可能不是一个好的设计)您可以将其用作永久解决方案,而不是临时解决方案

选项2:使用枚举(不是一致的解决方案)

如中所述。您可以为您的招摇过市定义指定查询参数“q1”,如下所示

{
                 "in": "query",
                 "name": "q1",
                 "type": "boolean",
                 "required": false,
                 "enum" : [true],
                 "allowEmptyValue" : true
}
(1) “必需”必须为false

(2) “allowEmptyValue”必须为true

(3) “enum”必须只有一个非空值

(4) “type”必须是“boolean”。(或带有特殊枚举的“字符串”,如“INCLUDE”)


我通过设置:

"required": true,
"allowEmptyValue": true

在Swigger UI中,将显示一个复选框,您可以在其中发送空值。这对我很管用。如果选中该选项并传递了一个空的查询参数,则URL将如下所示:?

@supungjerathne我们处理的是一个特例,其中,q1的空值是否有特定的操作SO在没有招摇过市ui的直接调用中工作,对吗?@supungjerathne yep.。我认为发现问题的最佳方法是使用数据包捕获工具(如wire shark)捕获和检查招摇过市请求的HTTP数据包。如果你能分享一个屏幕截图就更好了。:)@我想你误解了我。。我已经更新了这个问题。。请参考。。我不可能使用您的选项1,因为我必须更改数百个web服务,而您的选项2阻止用户提供输入,因为q1只能获取枚举中提到的一组值。@a如果选项1可用,(如果不影响端点的规格),这是最好的方法,不仅要解决您的虚张声势问题,还要实现总体实施目标。虽然您必须更改数百个,但如果您有效地使用IDE,只需单击几下即可。