簡體   English   中英

Java REST服務PUT參數

[英]Java REST service PUT parameters

這是我的Jersey Rest Web服務的幾種方法的樣子,我有一些方法可以更新用戶設置,例如:

@PUT
@Path("/langauge")
@Consumes("text/plain")
public void updateLanguage(String lang) {

    ***check validity of the lang by string comparisons**
     and update database with the new language*
}

@PUT
@Path("/threshold")
@Consumes("text/plain")
public void updateThreshold(Long threshold) {

   *//check value and update in server*
}

現在我在這里有幾個問題。

1-創建一個資源並使用查詢參數進行更新是否更好,而不是針對不同的更新選項使用不同的資源路徑? 這看起來更讓人放松,但我不確定我是否應該將其更改為類似的內容,因為在將來,如果要更新的參數多於混亂的參數,而擁有獨立的路徑看起來會更清晰?

@PUT
@Path("/settings/{lang}/{threshold}")
@Consumes("text/plain")
public void updateSettings(@PathParam("threshold") String thre,
        @PathParam("lang") String lang,
        @DefaultValue("") @QueryParam) {


}

2-另一個問題是,現在更新語言時,我接受一種語言作為字符串,然后檢查在服務器中是否有效,因此,當客戶端使用此方法時,他們不知道應該將什么作為有效參數正確發送。 有沒有一種方法可以使它更加用戶友好,可以在WADL文件上添加一些注釋,但是還有另一種REST方法嗎?

我想說,在不知道應用程序整個范圍的情況下,您可以將設置視為資源,並將特定選項視為設置集合的成員。 這將允許添加新設置(缺點是,想要更新多個設置的客戶端需要知道並調用所有設置):

/settings/language
/settings/threshold
...
# later
/settings/timeout
/settings/temperature

您可以在每個選項上實現GET方法,以向感興趣的客戶端顯示信息(HTML或文本或其他格式)。

另一種方法是在一個端點收集所有設置,並接受某種格式(例如JSON)的請求實體作為所有可用設置的表示。 可以在Elasticsearch API(例如: http//www.elasticsearch.org/guide/reference/api/admin-indices-update-settings.html )中觀察到這種方法。

答案:

1)由於它們是單獨的資源,因此應具有單獨的服務方法。 因此,較早的方法很棒。 這使您的代碼更靈活。

2)您可以為每個資源(在這種情況下為語言)賦予唯一的ID,並使用它來更新如下語言:

api/language/{languageId}

這些ID可以通過數據庫自動生成,也可以定義其他機制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM