我想向客户返回产品(客户可以购买)的可用数量列表(例如,1,2,3 ......,200)。我们正在考虑三种方法:
我们目前的要求不支持分段数量(例如,我们不支持1-20,40-50,100-200数量,我们只支持1-200)
这应该是解决这个问题的方法?我们在jQuery上使用ASP.NET和AJAX。
谢谢。
答案 0 :(得分:1)
选项1:返回范围内所有整数的列表对我来说似乎非常浪费。谁知道未来需要多少数量?如果您的产品可以订购成千上万,这可能会导致很大的问题。
选项3:当输入需要人类可读或可编辑时,可解析格式很有用。一个很好的例子是MS Word中的打印对话框;用户可以选择打印页面“1,2,7,9,11”或“5-15”等。但是解析为bug带来了全新的可能性。即使在简单的例子“1-200”中,也有可能将“ - ”解释为给出“-200”或类似的减号。如果界面是机器对机器,我总是喜欢一个明确的语义界面。通过明确定义的接口(例如参数“rangeFrom”和“rangeTo”),解释的模糊性被消除,并且要解决的唯一问题是实现。我不知道你的客户端是什么,但是在任何产生1到200整数列表的语言中都应该是非常简单的。
我肯定会选择选项2:这是一个明确定义的界面。它易于构建,并且在线路上非常有效。
根据您希望面向未来的方式,您可以考虑选择选项2并伪装一种重载。所以今天你会保持简单,只需返回以下内容:
{
"listType": "range",
"rangeFrom": 1,
"rangeTo": 200
}
客户端应该检查“listType”返回值,目前它总是期望它是“范围”。但是在将来你可以添加其他类型。对于axample
{
"listType": "increment",
"rangeFrom": 2,
"rangeto": 20,
"inc": 2
}
// Interpreted by client as:
// 2, 4, 6, 8, 10, 12, 14, 16, 18, 20
{
"listType": "valuelist",
"values": [1, 2, 5, 20]
}
// Interpreted by client as:
// 1, 2, 5, 20
今天这将是简单而有效的,但如果以后有新的要求而不会破坏兼容性,那么您可以轻松扩展。