gpt4 book ai didi

swift - url 路径中的 Alamofire 变量或参数支持

转载 作者:行者123 更新时间:2023-12-05 05:07:39 26 4
gpt4 key购买 nike

Alamofire 是否支持 url 路径中的变量,我已经找了一个例子,但找不到。我查看了他们的文档和单元测试。编写带有 url 支持的 api 是很常见的:

http://someapi.com/users/{user}/profile

我已经查看了他们在 URLEncoding 中的示例,但我找不到上面的任何内容,示例似乎只添加了查询参数。

最佳答案

Alamofire 依赖基金会 URL struct,所以你需要看看那里。

URL 提供了几种不同的构造它们的机制,您可以使用的一种是 path component ,例如:

var url = URL(string: "http://someapi.com/users")
let user = "user"
url?.appendPathComponent(user)
url?.appendPathComponent("profile")

此外,您可以利用枚举进行一些清理,并可能从字符串构造 URL,如下所示:

enum MyURLScheme {
case profile(user: String)

var url: URL? {
switch self {
case .profile(let user):
let url = URL(string: "http://someapi.com/users/\(user)/profile")
return url
}
}
}

let profileURL = MyURLScheme.profile(user: "user").url

编辑:您还可以使用 Alamofire Router 类来构建请求,taken from here :

enum Router: URLRequestConvertible {
case search(query: String, page: Int)

static let baseURLString = "https://example.com"
static let perPage = 50

// MARK: URLRequestConvertible

func asURLRequest() throws -> URLRequest {
let result: (path: String, parameters: Parameters) = {
switch self {
case let .search(query, page) where page > 0:
return ("/search", ["q": query, "offset": Router.perPage * page])
case let .search(query, _):
return ("/search", ["q": query])
}
}()

let url = try Router.baseURLString.asURL()
let urlRequest = URLRequest(url: url.appendingPathComponent(result.path))

return try URLEncoding.default.encode(urlRequest, with: result.parameters)
}
}

Alamofire.request(Router.search(query: "foo bar", page: 1))

关于swift - url 路径中的 Alamofire 变量或参数支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58949666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com