2015-02-11 170 views
0

我得到了API的文檔,我需要做整合。但有些方法看起來很奇怪。 例如:寧靜 - 糟糕的API設計?

https://someurl.com/someurlxml.php post 

action - FindProduct

paremeters:

id = ProductId

邏輯上,它看起來對我來說,因爲它是get方法,不post,因爲它只返回的內容,並且不產生任何事情(事實上,由於某些原因,所有方法都有post類型,即使在邏輯上它們不是)。

如果我嘗試例如:

s = requests.Session() 
url = 'someurl.com/someurlxml.php' 

然後,如果我這樣做:

product = s.get(url, data={'action': 'FindProduct', 'id': 10})

它不返回任何東西。但是,如果我嘗試:

product = s.post(url, data={'action': 'FindProduct', 'id': 10})

然後返回該產品的內容。但是這不是API的糟糕設計嗎?因爲它看起來應該是get方法,不是發佈,不是嗎?它應該真的是post,而不是get

因此,API讓我感到困惑,因爲很難猜測在調用一個或其他動作時會發生什麼。或者我在這裏錯過了什麼?

回答

1

從純粹的角度來看,你是對的;它應該使用GET而不是POST。

然而,許多API使用POST來處理所有事情,因爲(a)GET長度受限,(b)DEL等一些方法沒有得到廣泛支持。

最後它不是你可以控制的;它是POST,和它一起生活。