我想制作一个访问在线RESTful API的库。 API定义了一个已实现方法的列表,并允许每个方法的参数以及(在某些情况下)给定参数的允许值。我想我想确保(A)只有实现的方法才能被调用; (B)只允许为给定方法定义参数;和(C)对于给定参数只允许某些值,只允许这些值。如何在构建GET请求时限制允许的参数和值?
是比较容易的只是用枚举“方法”(A):
public enum Method {
getObjectById,
getObjectBySearch,
...
}
为(B)我在想方法的每个实例,然后需要有它的允许参数的自己枚举和(C )一些参数,允许值的枚举,有点像(如果这让任何人畏缩,我很抱歉):
注意:下面的代码不是有效的JAVA;它只是作为一个概念的例子。
public enum Method {
getObjectById() {
enum Parameter {
objectId;
},
getObjectBySearch() {
enum Parameter {
query,
queryType() {
enum Type { type1, type2 }
}
}
}
}
显然,当地枚举被Java不允许,所以这不能做;我想有更多优雅的方式来实现我的最终目标,但是我已经练习了5年以上,所以我正在努力寻找它们。
或者我可能会反思这一点,试图在我的请求的参数和值中实现这种类型的安全性是非常糟糕的做法(我也不是很有经验) - 如果是这种情况,我会很感激为什么这是不好的做法的解释。
感谢,
- 伊戈尔
您是否试图约束客户端或服务器端的方法和参数类型? – Perception 2011-12-30 15:54:51
@Perception客户端 – ipetrik 2011-12-30 16:10:37