带有url参数的Siesta iOS GET请求

时间:2016-05-17 12:49:05

标签: ios swift siesta-swift

有没有办法在Siesta中提供GET请求,同时提供参数,例如http://example.com/api/list.json?myparam=1

我试过

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

但是问号会被转义。

然后我尝试了

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

但它总是因“网络连接丢失”而失败,但所有其他请求都成功,因此消息错误。

1 个答案:

答案 0 :(得分:11)

您正在寻找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。