我设计一个RESTful API。
一个服务应该多个键值对提供查询功能。 例如,客户端可以与不同产品的一个HTTP GET请求和相关联的查询的数量。
客户想查询产品1我其实不希望我的URI看起来像这样量44和产品2与量55:
/produkt?productId1=1&productquantity1=44&productId2=2&productquantity2=55
因为我不知道有多少产品查询。
或者是这样的:
/produkt?product=1,44&product=2,55
因为客户端怎么能知道逗号之前存在产品ID和逗号的数量后。
有没有人有其他解决办法? 或者是不是RESTful的提供查询多个产品,一个请求的可能性? 它是更好地提供可能性查询只是一个与产品相关的数量,如果客户想查询更多的产品,他们应该派遣更多的要求呢?
我将扩大在你的第二个建议,一点点加入明确的名称为您的产品的各个部分,并用分号来代替逗号分隔的产品属性,因为顺序并不重要*。
/products?id=1;qty=44&qty=55;id=2
注意如何id
和qty
切换周围的第二款产品,因为属性的顺序并不重要。
*还有就是用逗号时的顺序很重要,和分号当顺序并不重要的约定。
这里有一个想法传递参数:
/products?productDetail=[{"key":"key0","value":"key1"},{"key":"key2","value":"key2"},{"key":"key3","value":"key3"}]
哪里
[{"key":"key0","value":"key1"},{"key":"key2","value":"key2"},{"key":"key3","value":"key3"}]
是的JSON表示List<kv>
类
class kv {
String key;
String value;
public kv(String key, String value) {
super();
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
所以你可以很容易地转换查询参数productDetail
到List<kv>
使用
new Gson().fromJson(productDetail,kv.class);
比你可以轻松地重复所有元素。
另一个建议是,如果你不知道有多少产品被查询然后用一个做POST
此请求。