Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get Swagger UI's Parameter to be Dropdown menu instead of Text Input

I am using swagger to display my RESTApi, one parameter of an API takes string as input and convert it to enum value. Is there any way to display a drop-down menu on the Swagger UI instead of having a text input field so that users can only select the string values within the enum value.

like image 687
mirage1s7 Avatar asked Jun 25 '14 01:06

mirage1s7


3 Answers

you can display dropdown using following code of swagger. You have to use enum. e.g. if you want to take gender as input then there can be three possible values

  • male, female, other
-name: "gender"
          in: "query"
          type: "string"
          enum: [ "male", "female", "other"]
          description: "Enter user gender here."
          required: true
like image 66
Kundan Avatar answered Nov 15 '22 07:11

Kundan


The key is to use allowableValues in the @ApiParam annotation.

The demo showing the result:

http://petstore.swagger.io/#!/pet/findPetsByStatus

Check out pet/findByStatus, it's not a dropdown but input is limited in the multi-select box.

like image 27
localhost Avatar answered Nov 15 '22 09:11

localhost


You can directly use enum instead of String parameter as a API parameter.

@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;
    }

}

like image 5
Sagar Vaghela Avatar answered Nov 15 '22 07:11

Sagar Vaghela