2016-05-17 106 views
3

有沒有辦法在Siesta中提供GET請求,同時提供參數,如http://example.com/api/list.json?myparam=1Siesta iOS GET請求與URL參數

我試着用

myAPI.resource("list.json?myparam=1") 

但問號被逃脫。

然後我試圖與

myAPI.resource("list.json").request(.GET, urlEncoded:["myparam": "1"]) 

但它總是失敗,「網絡連接已丟失。」,但所有其他請求成功,因此,該消息是錯誤的。

回答

10

您正在尋找withParam

myAPI.resource("list.json").withParam("myparam", "1") 

Service.resource(_:)方法你想在你的第一個例子中使用的具體解釋避免特殊字符作爲PARAMS(或任何東西,除了一個路徑)。從文檔:

path參數僅附加到baseURL的路徑,並且永遠不會解釋爲URL。諸如..,//,?和https之類的字符串沒有特殊含義;他們會直接進入結果資源的路徑,必要時會轉義。

這是一項安全功能,用於防止用戶提交的字符串滲入URL的其他部分。

第二個示例中的Resource.request(_:urlEncoded:)方法用於在請求正文(即使用POST或PUT)中傳遞參數,而不是查詢字符串中的參數。

請注意,如果您想繞過Siesta的URL組件隔離和轉義功能,您總是可以使用Service.resource(absoluteURL:)構建一個URL。