有没有一种方法可以在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"])
但它总是以"网络连接丢失"失败,但所有其他请求都成功了,因此消息是错误的。
您正在寻找withParam
:
myAPI.resource("list.json").withParam("myparam", "1")
您在第一个示例中尝试使用的Service.resource(_:)
方法特别避免将特殊字符解释为params(或除路径之外的任何字符)。来自文档:
path参数只是简单地附加到baseURL的路径,并且从不被解释为URL。字符串,如..、//、?、?,和https:没有特殊含义;它们直接进入结果资源的路径,必要时进行转义。
这是一个安全功能,旨在防止用户提交的字符串渗入URL的其他部分。
第二个示例中的Resource.request(_:urlEncoded:)
方法用于传递请求体中的参数(即使用POST或PUT),而不是查询字符串中的参数。
请注意,如果您想绕过Siesta的URL组件隔离和转义功能,您可以始终使用Service.resources(absoluteURL:)自己构造URL。