我的公司在内部apis等中使用标准格式的健康检查回复。如果我们遇到问题,我们要么在成功时返回内容类型application/status+json
,要么application/problem+json
返回状态(406
的一部分3}})。
但是如果我将内容类型设置为其中任何一个,我的响应就会成为emptu SupportedMediaTypes
响应。
那么,我如何告诉JsonOutputFormatter它可以将这些Json头类型添加到它的services.AddMvc().AddJsonOptions(jsonOptions => {
jsonOptions.SerializerSettings.SupportedMediaTypes.Add("application/problem+json");
});
集合中?
我希望我可以这样做:
$im = new imagick( 'test.pdf' );
$page_count = count($im);
但我当然无法找到办法。
答案 0 :(得分: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();