2017-03-10 3 views
0

私の会社では、内部APIなどのヘルスチェック応答に標準フォーマットを使用しています。コンテンツがapplication/status+jsonのステータスを返信するか、問題がある場合はapplication/problem+jsonになります(this proposed specの部分)。サポートされているヘッダータイプをJsonOutputFormatterに追加

しかし、これらのいずれかにコンテンツタイプを設定すると、私の応答はemptu 406という応答になります。

JsonOutputFormatterに、これらのJsonヘッダータイプをSupportedMediaTypesコレクションに追加できるようにするにはどうすればよいですか?

私は私のような何かができる期待:

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

しかし、もちろん、私はそれを行うための方法を見つけることができません。

答えて

1

さて、これを行う方法があります。 OutputFormattersコレクションが見つかり、JsonOutputFormatterを引き出すことができました。拡張メソッドとして、

 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"); 
     }); 

または::そこからは、サポートされているメディアタイプを追加することができます

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

と呼ばれるので、同じよう:

services.AddMvc().AddStatusJsonSupport(); 
関連する問題