NSwag icon indicating copy to clipboard operation
NSwag copied to clipboard

C# Client Generation: Method with multiple consumes defaulting to the first Content-Type

Open mattt90 opened this issue 6 years ago • 2 comments

Looking at the client generation templates : https://github.com/RSuter/NSwag/blob/master/src/NSwag.CodeGeneration.CSharp/Templates/Client.Class.liquid#L155 this consumes takes the first Content-Type on the swagger.json (https://github.com/RSuter/NSwag/blob/master/src/NSwag.CodeGeneration/Models/OperationModelBase.cs#L227).

My method accepts multiple ContentTypes: "consumes": [ "application/merge-patch+json", "application/json-patch+json" ], When the Client is generated it sets the ContentType to the first one by default, so if I call that method with ContentType "application/json-patch+json" the parameter becomes null.

Is there a way to expose content-type as a parameter or split this method in the contracts so that it exposes two endpoints that call the same method just with different content-types?

What would you suggest doing for this scenario?

Somewhat related to #1150 and #1765

Thanks, I appreciate your feedback.

mattt90 avatar Jan 24 '19 21:01 mattt90

Any news on this? Is implementing a custom operation filter the only way to sort of fix this by limiting the content types to the one my code should actually send? My generated code crashes because for some reason application/x-www-form-urlencoded was selected during client code generation (it is the last content type in the list). As a result the generated client tries to serialize and deserialize the object passed in as body argument as a dictionary and set it as FormUrlEncodedContent, which it is not. It should be serialized as json.

prrrtpieptoet avatar Aug 12 '21 14:08 prrrtpieptoet

@RicoSuter perhaps this requires some overloads to be considered?

davidfenko avatar Jul 18 '22 12:07 davidfenko

I agree, I also need such a funcinonal that will allow me to indicate consumes for requests, and will fill content correctly.

Davidos533 avatar May 20 '23 21:05 Davidos533