我有一个返回一些产品数据的Web API项目。未指定Content-Type时抛出异常
如果未指定任何接受头返回XML作为默认情况下,像这样做在我WebApiConfig
:
config.Formatters.Clear();
config.Formatters.Add(new XmlMediaTypeFormatter());
config.Formatters.Add(new JsonMediaTypeFormatter());
config.Formatters.Add(new FormUrlEncodedMediaTypeFormatter());
所以默认是XML,第一格式,但API仍然支持JSON如果请求询问它。
在我ControllerHelper
,我添加了一个不支持415格式响应:
catch (FormatException)
{
var resp = new HttpResponseMessage(HttpStatusCode.UnsupportedMediaType)
{
Content = new StringContent(string.Format(HttpStatusCode.UnsupportedMediaType.ToString())),
};
throw new HttpResponseException(resp);
}
而且我想抛出一个响应,如果没有指定接受头,因此要求它进行设置,无论是application/xml
,text/xml
或application/json
。
例如,如果我测试设置接受高级休息客户端application/foo
我想抛出一个异常。
如何做到这一点?提前致谢!
你看看request.Headers? – fuchs777 2014-09-04 08:57:59
我可能在我的搜索答案中偶然发现了它。是否应该为控制器中的每个ActionResult指定它,或者什么是最佳方法?谢谢。 – urbz 2014-09-04 09:01:04
尝试过滤网页API。在那里你可以解析你的头文件并获取内容类型并将异常/错误消息或watever返回给客户端。过滤器适用于所有操作。没有太多的经验,但看到它的工作。 – Savaratkar 2014-09-04 09:06:31