休息服务发布参数

时间:2012-10-05 13:14:50

标签: json http rest post service

我有休息服务,我将发布数据。在post数据中使用http表单元素发布数据是否更好?或者最好将所有数据发布在一个json字符串中,然后在服务器端解析字符串。有什么理由去单程对方?

提前致谢。我试图确保在架构上我们以最好的方式编码。 感谢

3 个答案:

答案 0 :(得分:0)

我认为你必须使用第一个解决方案,因为它更接近RESTful架构。此外,这个解决方案是一个标准,所以你不需要做额外的事情来编码/解码POST参数。

答案 1 :(得分:0)

我认为这取决于您的数据。 如果您的数据非常平坦,并且键和简单值之间存在一对一的对应关系,那么表单样式提交可能是最合适的。如果您有更复杂的嵌套数据或某种类型的数组,我会使用json方法。我不认为任何一个选项或多或少都是RESTful。

答案 2 :(得分:0)

表单元素是要走的路。如果您在帖子中使用json,则需要将结构传达给客户端。这通常是在带外完成的(我从来没有看到它在带内完成,但我可能错了),这会在客户端和服务器之间创建耦合。

当您使用表单时,带内表单会向客户端传达帖子数据应该是什么。当数据要求发生变化时,表格会发生变化,客户可以(可能)相应地进行调整。

例如,只是说您已在媒体类型中定义了以下名词:emailpasswordfirst-namelast-namedate-of-birth等等,您有一个需要emailpassword的用户创建表单,其他用户可选择稍后填充数据(通过其他表单)。稍后,您决定在创建帐户时希望用户提供其姓名,因此您需要更新表单,以便emailpasswordfirst-namelast-name。由于客户已经熟悉这些名词(并且知道每个名词中包含哪些数据),因此编写良好的客户端将与更新的表单兼容。如果仅发布了json数据,则客户端将无法工作,因为他们不知道所需的json数据已更改(除非您更改了媒体类型,在这种情况下,无论如何都会破坏它们)。

现在,此方法仅适用于已在媒体类型中定义的名词。如果你要添加一个新名词,那么你可以只使它成为可选项(现有客户端仍然可以工作,新客户端可以利用新名词)或者如果你需要使它成为必需项,那么你需要创建一个新名词媒体类型,只有新的(或更新的)客户端才能使用。