2014-02-20 34 views
1

這看起來很髒,但它是爲了文檔目的,我發誓!Url編碼數組

我在我的文檔中使用GET s訪問我的服務,因此人們可以嘗試一些操作,而無需過於複雜。

追加x-http-method-override=POST到URL強制服務器採取GETPOST

這是除了當我需要POST對象數組都好。這在標準POST中會很簡單,但今天我有了新的噩夢。

預期POST樣子:

{"name":"String","slug":"String","start":"String","end":"String","id":"String","artists":[{"id":"String","name":"String","slug":"String"}],"locationId":"String"} 

正如你可以看到有藝術家的數組了這裏。

我試圖做到以下幾點:

model/listing?start=10:10&end=12:30&artists[0].name=wayne&artists[0].id=artists-289&locationid=locations-641&x-http-method-override=POST 

,但無濟於事。

如何獲得一個對象數組到一個URL,以便服務堆棧會滿意它?

我明白這不是天經地義的事,但它使解釋帶有可點擊網址示例

+2

來吧,停止濫用REST。看起來像你試圖通過'GET'使用'POST'。難怪你有麻煩。你猜怎麼了?這只是開始 - 考慮支持,API成熟度,迷惑的用戶。如果我是你,我會在那裏停下來開始使用'POST'。你的API的用戶是有手的,並且有希望是聰明的,儘管事實上它可能聽起來很愚蠢。他們將能夠製作一個簡單的「POST」請求。您還可以通過提供一個簡單實用的示例來幫助他們。 – oleksii

+3

我確實說過,這純粹是爲了文檔!這與生產代碼和最終用戶無關!這與REST純度和極端的REST意見和宗教信仰毫無關係。我的REST服務可以表現完美的RESTful,並且我可以將其記錄爲我想要的。使用一個合法的問題來證明你是如何純粹的REST是有點廉價IMO – iwayneo

+0

我指的是HTTP RFC標準。在我同意的地方,我們可以就REST的純度進行辯論(讓我們一起討論),但你不想違反標準。這是我的觀點 - 每個人都明白的一個常見標準。 – oleksii

回答

2

我的終點無限更容易,您可以使用JSV在URL編碼複雜的對象。這應該爲你的DTO工作:

model/listing?name=wayne&artists=[{id:artists-289,name:sample1},{id:artists-290,name:sample2}]&locationId=locations-641 

可以通過編程使用在ServiceStack.Text的ToJsv擴展方法的任意對象創建JSV。

+0

完美!謝謝 :) – iwayneo