Wednesday, 3 February 2016

Ignoring parameters in Swashbuckle

I’m working with a WebApi that is passed the HttpRequestMessage class which is always available in the ASP.NET WebApi pipeline. However, when the documentation is exposed in Swashbuckle, I get a textbox that shows up where it expects me to enter a value for this parameter.

The operation is defined as follows…

  public async Task Get(HttpRequestMessage request)

The problem is, when the documentation is emitted I end up with this ugly mess...


I set about finding a way to instruct Seashbuckle to ignore this parameter, and finding there isn’t anything in the box I set about writing a filter that would do this for me.

In Swashbuckle you can plug-in operation “filters” that can be used to alter the emitted data – the filter is passed the context of the operation being emitted, and you can monkey around with the data that pops out. All I had to do then was create a filter that would look for this datatype, and remove the corresponding data from the results. I ended up with this…

  public class IgnoreHttpRequestMessageOperationFilter : IOperationFilter
    public void Apply(Operation operation, SchemaRegistry schemaRegistry, 
                      ApiDescription apiDescription)
        .Where(desc => desc.ParameterDescriptor.ParameterType 
            == typeof(HttpRequestMessage))
        .ForEach(param =>
          var toRemove = operation.parameters
            .SingleOrDefault(p => == param.Name);

          if (null != toRemove)

With that class in place, I just needed to plug this in to the swagger config file as follows...


And Bob's you're uncle...



Anton Bocharov said...

Cool! thanks for pointing this out! On stackowerflow they suggest to rewrite controllers not to use request as a parameter, which is not suitable for us.

Brave Technologies said...
This comment has been removed by a blog administrator.
Akshay Bheda said...

I was searching solution for the same problem, Thanks to you :)

ZeroTolerance said...

Good job mate. Exactly what I was looking for

Harry said...

Worked like charm. Thank you.

Tarek Mohamed El-Mallah said...
This comment has been removed by the author.
Tarek Mohamed El-Mallah said...
This comment has been removed by the author.
Prachetan Anubhuti - Pragna Prachetas said...

works like a magic ... thanks a ton

Richard Majece said...

I have a huge amount of applications in my phone so I was scared when I lost it. helped me to track my phone number and find it)