2014-06-24 63 views
-1

我想設計一個REST API,和我有一個問題,在講究一個方法:休息的最佳實踐:如何使用URL作爲參數

  • 這種方法是隻讀的。它返回的信息與服務器端沒有修改
  • 這種方法(顯然)冪等
  • ,一種是參數是一個回調URL

由於它僅用於信息檢索,我是第一次誘惑使用GET動詞:

// The braces are just here to highlight {variables} 
http://api.com/foo/{someId}/bar/{http://myawesome.com/callbackurl} 
// Or 
http://api.com/foo/{someId}/bar?callback={http://myawesome.com/callbackurl} 

但似乎醜陋。由於url包含很多可能妨礙api可見性的正斜槓。

那麼爲什麼不使用POSTPUT?如果這個callbackurl也有自己的一些參數呢?

什麼是最佳解決方案?

+0

只需對您的參數進行網址編碼,不要擔心看起來很醜陋。您的REST API不需要輸入美容選美:) –

回答

1

如果您需要在URL中傳遞URL,請使用查詢參數並對URL進行編碼。這裏是一個例子,Google如何將搜索結果的URL添加到URL中。

http://www.google.de/url?...&url=http%3A%2F%2Fstackoverflow.com%2F 

我不認爲醜陋是設計RESTful API的重要一點。更重要的是你的API如何幫助客戶端與之交互。這是谷歌在這裏做的。他們向您返回網址的結果,並通過描述您使用哪一個來決定。

0

如果您想要融入純粹的REST API,GET聽起來更自然。否則,如果你能背叛REST教條生活,你可以使用POST發送PARAMS ;-)

如果你仍然想使用GET,你應該編碼callbackurl,以避免與自身的參數問題