java 如何让Swagger UI的参数成为下拉菜单而不是文本输入

vs3odd8k  于 2023-02-07  发布在  Java
关注(0)|答案(4)|浏览(320)

我正在使用swagger来显示我的RESTApi,API的一个参数将字符串作为输入并将其转换为枚举值。有没有办法在Swagger UI上显示下拉菜单,而不是文本输入字段,以便用户只能选择枚举值中的字符串值?

xcitsw88

xcitsw881#

你可以使用下面的swagger代码显示下拉列表。你必须使用enum。例如,如果你想输入性别,那么可以有三个可能的值

  • 男性、女性、其他
-name: "gender"
          in: "query"
          type: "string"
          enum: [ "male", "female", "other"]
          description: "Enter user gender here."
          required: true
wz1wpwve

wz1wpwve2#

关键是在@ApiParam注解中使用allowableValues
显示结果的演示:
http://petstore.swagger.io/#!/pet/findPetsByStatus
检查pet/findByStatus,它不是一个下拉菜单,但输入是有限的,在多选框。

h79rfbju

h79rfbju3#

您可以直接使用枚举代替String参数作为API参数。

@RequestMapping(value = "/test", method = RequestMethod.POST)
public void test(EnumTest enum) {
    // body
}

EnumTest.java

public enum EnumTest {

    One("One"),
    Two("Two");

    private String str;

    EnumTest(String str){
       this.str = str;
    }

    public String getStr() {
       return str;
    }

}

fxnxkyjh

fxnxkyjh4#

上面的解决方案对我来说不起作用。在Swagger中添加下拉列表的最简单方法是更新swagger.json文件。

"parameters": [
                {
                    "name": "status",
                    "in": "query",
                    "type": "string",
                    "default": "available",
                    "enum": [
                                "active",
                                "inactive",
                                "available"
                    ],
                    "required": true
                }     
            ],

注意:我使用的是swagger版本2.0

相关问题