2014-05-14 33 views
1

我正在實現一個包含/feed請求的HTTP REST API。該請求返回用戶的新聞提要。Flask:使用數組參數實現HTTP GET

該請求帶有幾個參數,包括userId,追隨者列表,startTimemaxItems

在服務器端(Python和Flask)實現它的最簡單方法是添加一個JSON負載,從中我可以讀取參數。

唉,將有效載荷添加到GET請求is not a good idea,並且它不受許多客戶端庫支持。

我的選擇:

  • 製作/feed一個POST請求。這很醜陋,因爲POST不應該用來從服務器請求信息。
  • 拆分/feed致電/updateFollowersPOST)和/feedGET)。這會浪費時間,因爲GET呼叫只能在POST呼叫後進行。

這兩個選項看起來都不對。有沒有什麼標準方法可以用一堆複雜的參數進行類似GET的調用?

+0

REST實際上並沒有規則,因爲您可能已經意識到了,但我想與您分享我的看法:將'請求類型'放在像'/ getFeed'這樣的資源中也很難看,我只是堅持'/ feed'。除此之外,不要將用戶作爲參數傳遞給'/ feed',最好是像'/ users//feed'一樣構建url,但這取決於您的其他服務的實現 –

+0

@TimCastelijns 'getFeed'是一個錯誤 - 它確實是'/ feed'。除此之外,對於URL參數,'userId'可以 - 但是如何在URL中傳遞數組? –

+1

在這種情況下使用POST可能不是一個壞主意。見http://stackoverflow.com/questions/5020704/how-to-design-restful-search-filtering –

回答

1

將/ feed調用拆分爲/ updateFollowers(POST)和/ feed(GET)。 這會浪費時間,因爲GET調用只能在 POST調用後進行。

REST並沒有真正的規則,你可能知道,但我想與大家分享我的意見:這是相當醜陋在這樣的資源來把「請求類型動詞」,所以我不會」不要這樣做。

製作/饋送POST請求。這很醜陋,因爲POST不應該是用來從服務器請求信息的 。

我明白你爲什麼認爲這很醜。這聽起來不對得到使用POST請求的數據,但是,由於在this question's top answer說:

實現一個RESTful的搜索,最好的辦法是考慮搜索 本身是一種資源。然後,您可以使用POST動詞,因爲 正在創建搜索。您不必在數據庫中直接創建 以使用POST。

由於這與您所做的相似,所以使用POST可能不是一個壞主意。我沒有看到更好的選擇,所以你可能想要像這樣實現它。

+0

'POST' - 搜索不會生成對我來說很有意義,但它可能是(很多)惡魔中較小的一個。 –

+0

@AdamMatan *它可能是(少數幾個)惡意中的較小者*我認爲是,是的。通過這樣思考,你可以讓它更有意義*儘管如此,考慮搜索本身是一種資源 –