我的公司在内部 apis 等中使用健康检查响应的标准格式。我们要么返回内容类型为application/status+json
on success的状态,要么application/problem+json
如果我们有问题(本提议规范的一部分)。
但是,如果我将内容类型设置为其中任何一个,我的响应就会变成空406
响应。
那么,我如何告诉 JsonOutputFormatter 它可以将这些 Json 标头类型添加到它的SupportedMediaTypes
集合中?
我希望我可以做这样的事情:
services.AddMvc().AddJsonOptions(jsonOptions => {
jsonOptions.SerializerSettings.SupportedMediaTypes.Add("application/problem+json");
});
但当然,我找不到办法做到这一点。
好的,所以这是一种方法。我找到了该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();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句