2017-03-10 2 views
0

Meine Firma nutzt ein Standardformat für Health Antworten in internen apis etc. Wir entweder den Status mit dem Inhaltstyp application/status+json auf Erfolg oder application/problem+json zurück, wenn wir ein Problem (Teil this proposed spec) haben.Add unterstützte Kopftyp JsonOutputFormatter

Aber wenn ich den Inhaltstyp auf diese beiden setzt, wird meine Antwort zu einerAntwort.

Also, wie kann ich dem JsonOutputFormatter mitteilen, dass es diese Json-Header-Typen zu seiner SupportedMediaTypes Sammlung hinzufügen kann?

Ich würde erwarten, ich so etwas wie tun könnte:

services.AddMvc().AddJsonOptions(jsonOptions => { 
    jsonOptions.SerializerSettings.SupportedMediaTypes.Add("application/problem+json"); 
}); 

Aber natürlich kann ich nicht einen Weg finden, zu tun.

Antwort

1

Okay, also hier ist ein Weg, es zu tun. Ich fand die OutputFormatters Sammlung und konnte den JsonOutputFormatter herausziehen.

 services.AddMvc(mvcOptions => { 
      //TODO: make extension method 
      var jFormatter = mvcOptions.OutputFormatters.FirstOrDefault(f => f.GetType() == typeof(JsonOutputFormatter)) as JsonOutputFormatter; 
      jFormatter?.SupportedMediaTypes.Add("application/problem+json"); 
      jFormatter?.SupportedMediaTypes.Add("application/status+json"); 
     }); 

Oder als Erweiterung Methode:

public static IMvcBuilder AddStatusJsonSupport(this IMvcBuilder builder) { 
     builder.AddMvcOptions(options => { 
      var jFormatter = options.OutputFormatters.FirstOrDefault(f => f.GetType() == typeof(JsonOutputFormatter)) as JsonOutputFormatter; 
      jFormatter?.SupportedMediaTypes.Add("application/problem+json"); 
      jFormatter?.SupportedMediaTypes.Add("application/status+json"); 
     }); 
     return builder; 
    } 

wie so genannt:

services.AddMvc().AddStatusJsonSupport(); 
Von dort können Sie einen unterstützten Medientypen hinzufügen
Verwandte Themen