Java 什么';在restful web服务中公开键值对的正确方法是什么?
我正在构建一个restful web服务,而我的后端恰好公开了一个键值对对象。例如,你可以说:Java 什么';在restful web服务中公开键值对的正确方法是什么?,java,rest,jersey,restful-url,restful-architecture,Java,Rest,Jersey,Restful Url,Restful Architecture,我正在构建一个restful web服务,而我的后端恰好公开了一个键值对对象。例如,你可以说: String value = transientObject.get("key"); 现在,它的url如下所示: GET /transientObject/key public class KeyValue { private String key; private String value; } 要设置值,请执行以下操作: POST /transientObject/key
String value = transientObject.get("key");
现在,它的url如下所示:
GET /transientObject/key
public class KeyValue {
private String key;
private String value;
}
要设置值,请执行以下操作:
POST /transientObject/key
并在正文中传递值
在我的api中还有很多其他调用返回和接受复杂对象,但这一个显然不适合这种模式。我可以更改api,以便GET和POST返回并接受如下所示的新对象:
GET /transientObject/key
public class KeyValue {
private String key;
private String value;
}
这将与我的api的其余部分更加一致,但它确实使这个调用变得有点烦人:现在,当您可以发送/检索值时,您必须构造/解构一个对象
为了保持一致性,我应该坚持当前的方式还是更改api以接受对象?如果键是整数(例如,自动递增的ID),而资源只是字符串值
,那么您已经在那里了。我觉得感觉不一样,因为键是字符串。实际上,它与修改/user/1
(如果用户只是一个名称/字符串)没有什么不同。@SimeonVisser这是有道理的(尽管我不知道我是否喜欢这个类比。很难想象一个用户不是一个复杂的对象),这不是最好的示例,但它展示了透视图。怎么样/username/1
?@simeonviser是的,这更有意义,谢谢