API参数 - {person:{name:'John'}} vs {name:'John'}

时间:2013-01-18 03:35:15

标签: ruby-on-rails api rest

创建restful API时,最好让客户端通过对象名称或仅通过属性发送。例如 POST / people / 的正文:

选项1: {person:name:'John'}

选项2: {name:'John'}

我在大多数API中通常会看到选项2 ,但我遇到了一个棘手的问题。我正在使用Rails,所以如果我想要一个处理html和json请求的动作,我不需要使用选项1 (因为Rails表单发送以对象类型开头的params )?

一种选择与另一种选择有任何利弊吗?

1 个答案:

答案 0 :(得分:2)

大多数情况下发送{person: {name: 'John'}}是不必要的,因为当您进行POST或GET时,您通常会根据URL知道预期或发送的响应类型(此处为'person')情况)。

然而,选项1有用例。使用选项2,您依赖于您正在进行GET / POST的URL来为您提供键入信息 - 它未在JSON中显式声明。这可能很好,就像您从/service/person/{id}获取,{person: {name: 'John'}}上的'person'标记是多余的。但是,如果您有一个类似RPC的服务,例如您要POST以验证有效负载的服务:/service/validate或类似的东西,您可能需要额外的信息,以便服务可以确定类型。