在url中传递rest资源输出格式

在url中传递rest资源输出格式,rest,format,url-design,Rest,Format,Url Design,AFAIK每个资源在REST设计中都有一个url。例如/user/28是id等于28的用户的url,/users将返回所有用户 有一些方法可以表示资源的输出格式: 传递查询参数,如format 使用扩展将/users url更改为/users.json来指定它,以获取json格式的用户 指定请求的格式XML、json、xls。。。通过设置Accept http头。 我在网上搜索,似乎正确的方法是设置Accept header。 但是,如果您想使用href指定的http链接下载xls格式的用户列表

AFAIK每个资源在REST设计中都有一个url。例如/user/28是id等于28的用户的url,/users将返回所有用户

有一些方法可以表示资源的输出格式:

传递查询参数,如format 使用扩展将/users url更改为/users.json来指定它,以获取json格式的用户 指定请求的格式XML、json、xls。。。通过设置Accept http头。 我在网上搜索,似乎正确的方法是设置Accept header。 但是,如果您想使用href指定的http链接下载xls格式的用户列表,则不能!此外,如果您想通过浏览器下载xls,您将遇到许多问题您应该使用ajax,因此xls应该使用ajax等进行下载


如果这是最好的方式,下载链接的解决方案是什么?如果不是,哪种解决方案更好?

接受标题被认为“更正确”,但您提到的所有选项都有很多示例。据我所知,没有一个被认为是坏的。就个人而言,我认为您应该尊重并更喜欢Accept标头,但如果存在格式查询参数,则应该覆盖它。“扩展”方法的缺点是,每种格式都会产生不同的资源,这可能会变得丑陋。

您应该阅读HTTP标准。如果您可以使用任何替代解决方案来代替accept标头,它将告诉您。如果您发现使用accept头不是强制性的,那么您可以将新的URI绑定到资源。