创建restful API时,最好让客户端通过对象名称或仅通过属性发送。例如 POST / people / 的正文:
选项1: {person:name:'John'}
选项2: {name:'John'}
我在大多数API中通常会看到选项2 ,但我遇到了一个棘手的问题。我正在使用Rails,所以如果我想要一个处理html和json请求的动作,我不需要使用选项1 (因为Rails表单发送以对象类型开头的params )?
一种选择与另一种选择有任何利弊吗?
答案 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
或类似的东西,您可能需要额外的信息,以便服务可以确定类型。