GET请求 - 参数或Accept标头中所需的响应格式

时间:2014-11-18 18:10:00

标签: web-services rest http-headers query-string http-accept-header

我正在开发一个ASP.Net Web API 2 RESTful Web服务,用于从我的数据库导入和导出数据。对于我的导出方法,客户端有几个选项可用于导出不同格式的数据(例如pdf,xml等)。我正在尝试确定客户端界面的最佳设计,以告知服务提供数据的格式。

据我所知,我最好的两个选择是使用带有媒体类型字符串的Accept Header或在客户端可以在查询字符串中提供format参数的方法中添加参数。如果我选择使用Accept Header,则可能涉及使用自定义媒体类型字符串。

在我看来,使用Accept Header将更符合HTTP标准和RESTful实践,但在服务端和客户端上使用查询字符串中的format参数将更容易实现。

有谁可以解释这两种设计的一些优点或缺点是什么?

1 个答案:

答案 0 :(得分:3)

您的方法都是获得相同结果的有效方法。 REST不是一个实现的规范,所以无论你在这里得到什么样的反应都可能是某人的首选方式,或者他们如何理解REST。

你的问题类似于程序员的问题.SE:Tradeoffs between content negotiation via Accept header versus extensions。请注意,pdf,xml等具有标准识别的mime类型,因此我不认为需要自定义媒体类型字符串。

话虽这么说,我首选的获取报告的方法是拥有一个?format=pdf查询字符串。选择更容易,更易维护,更清洁等等。