根据Microsoft和Mozilla文档,415 状态码是:
微软:
HTTP_STATUS_UNSUPPORTED_MEDIA
415
服务器拒绝为请求提供服务,因为请求的实体采用所请求方法的请求资源不支持的格式。
Mozilla
HTTP 415 Unsupported Media Type 客户端错误响应代码表示服务器拒绝接受请求,因为负载格式是不受支持的格式。
为什么如果我将内容类型设置为 JSON 并将 XML 作为请求正文发送,我应该得到 415,但默认情况下却得到 400?
当请求不是有效的 JSON 格式时,获得 415 的最佳方法是什么?我使用资源过滤器实现了它,但我认为如果有其他方法,每次读取请求正文两次是一种浪费。
这是我的代码:
public class MyResourceFilter:Attribute, IResourceFilter
{
public void OnResourceExecuting(ResourceExecutingContext context)
{
context.HttpContext.Request.EnableRewind();
var requestBodyText = new StreamReader(context.HttpContext.Request.Body).ReadToEnd();
context.HttpContext.Request.Body.Position = 0;
try
{
JsonConvert.DeserializeObject<object>(requestBodyText);
}
catch (Exception e)
{
context.Result= new UnsupportedMediaTypeResult();
}
}
public void OnResourceExecuted(ResourceExecutedContext context)
{
}
}