Siesta iOS 带有 url 参数的 GET 请求

Siesta iOS GET request with url parameters

有没有办法在 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"])

但它总是以 "The network connection was lost." 失败,但所有其他请求都成功,所以消息是错误的。

您正在寻找withParam

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

您在第一个示例中尝试使用的 Service.resource(_:) 方法专门避免将特殊字符解释为参数(或路径以外的任何内容)。来自文档:

The path parameter is simply appended to baseURL’s path, and is never interpreted as a URL. Strings such as .., //, ?, and https: have no special meaning; they go directly into the resulting resource’s path, with escaping if necessary.

这是一项安全功能,旨在防止用户提交的字符串渗透到 URL 的其他部分。

第二个示例中的 Resource.request(_:urlEncoded:) 方法用于在请求正文中传递参数(即使用 POST 或 PUT),而不是查询字符串中的参数。

请注意,如果您想绕过 Siesta 的 URL 组件隔离和转义功能,您始终可以使用 Service.resource(absoluteURL:) 自己构建一个 URL。