RESTful Web服务 - 返回操作结果的最佳方式是什么?

4
我正在设计一个RESTful API,我想知道返回关于操作详情的最符合REST原则的方式是什么。
例如,当一些数据被POST到URL上时,就会发生对资源的操作。HTTP状态码将指示该操作的成功或失败。但除了成功/失败之外,我需要向客户端指示其他一些信息,比如ID号。
因此,我的问题是,ID号应该在响应内容中以XML文档的形式返回,还是应该在一些自定义的HTTP头字段中返回?哪种方式更符合REST原则?或者我可以自行选择。
3个回答

3

将实体作为HTTP POST的响应是完全有效的。

您也不需要返回XML,只需使用内容类型text/plain并简单地返回字符串值即可。

使用标头需要定义一个新的自定义标头,这并不理想。我认为客户端从响应正文中提取信息比从标头中提取信息更容易解析。


0

XML文档是最合理的选择。


这是我经常见到的。标题不太明显。 - Tom Cabanski
但这是符合REST原则的吗?在REST中,POST不是用来请求资源的,而是用来修改资源的。我看到的大多数示例都会在HTTP头的Location字段中返回新/修改后资源的位置。客户端可以自由选择是否要请求该资源以查看其修改结果。 - saille

0
如果只是一个ID号码,将其作为HTTP头部来处理可以节省开销。为了一个单独的数字构建正确的XML文档会给请求增加更多的开销。

但是什么才是正确的做法?客户最容易理解什么? - Michael Haren
一个标题占用的空间较少,但是对于人来说,使用文档更易读。 - Mitch Dempsey
你是如何确定头部使用的空间更少?如果我的头部是x-Created-Id: 45,而我的响应体是<Id>45</Id>,那么头部将占用更多字节。 - Darrel Miller
因为这不是格式良好的XML,你忘记了应该在顶部加上 <?xml version="1.0" encoding="utf-8"?>,这肯定会超过限制。 - Mitch Dempsey
1
一个XML文档不需要Xml声明就可以被视为格式良好。请参阅http://www.w3.org/TR/REC-xml/#sec-prolog-dtd。此外,根本没有必要使用XML。使用text/plain作为内容类型将允许正文只是简单的45。 - Darrel Miller
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接