将 Postman GET curl 转换为 swift url 会话请求

Convert Postman GET curl to swift url session request

我无法将以下 curl 转换为 swift 中的 url 请求。

curl --location --request GET 'https://p52.pocket52.com/apis/v1?p={%22x%22:%22images%22,%22pl%22:{}}'

我尝试了以下方法,但在展开可选值错误时意外发现 nil

var request = URLRequest(url: URL(string: "https://p52.pocket52.com/apis/v1?p={%22x%22:%22images%22,%22pl%22:{}}")!,timeoutInterval: Double.infinity)
    request.httpMethod = "GET"

我尝试了此 link

中的解决方案

但这是一个 POST curl 它不适用于 GET curl,因为 GET 请求不应包含正文。

让我定义的更清楚,基本上我需要构造如下GET请求。

https://p52.xxxx.com/apis/v1?p={"x":"images","pl":""}

我们可以通过为 URLComponent 部分附加一个 swift 字典来实现它,但是,听说我有一个嵌套字典,这是我面临困难的地方。

您可以像@Turo 建议的那样遵循 this answer,并使用 URLComponents 构建您的 URL,如下所示:

var components = URLComponents(string: "https://p52.pocket52.com/apis/v1")
components?.queryItems = [
    URLQueryItem(name: "p", value: #"{"x": "images", "pl" : ""}"#)
]

然后使用 URLComponentsurl 属性 组成你的 URLRequest:

guard let url = components?.url else { return }
var request = URLRequest(url: url)
request.httpMethod = "GET"