我想製作一個訪問在線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