Search code examples
restjerseyswaggerswagger-ui

Swagger UI passing authentication token to API call in header


I am new to Swagger.

I am using Swagger UI to generate swagger documentation. I have two API calls. First call is to generate token based on user name and password. Second call needs token generated by first call.

How I set that token for second call using Swagger UI?


Solution

  • @ApiImplicitParams and @ApiImplicitParam should do the trick:

    @GET
    @Produces("application/json")
    @ApiImplicitParams({
        @ApiImplicitParam(name = "Authorization", value = "Authorization token", 
                          required = true, dataType = "string", paramType = "header") })
    public String getUser(@PathParam("username") String userName) {
        ...
    }
    

    From the documentation:

    You may wish you describe operation parameters manually. This can be for various reasons, for example:

    • Using Servlets which don't use JAX-RS annotations.
    • Wanting to hide a parameter as it is defined and override it with a completely different definition.
    • Describe a parameter that is used by a filter or another resource prior to reaching the JAX-RS implementation.

    The Swagger UI will be updated so you can send your token from there. No changes to HTML will be necessary.


    Note: A while ago, when documenting a REST API with Swagger, I realized that just adding @ApiImplicitParam is not enough (even if you have only one parameter). Anyway, you must add @ApiImplicitParams too.