在 Alamofire 的请求适配器中添加 GET 参数

Posted

技术标签:

【中文标题】在 Alamofire 的请求适配器中添加 GET 参数【英文标题】:Add GET parameter in request adapter of Alamofire 【发布时间】:2017-01-08 16:33:39 【问题描述】:

我正在尝试在Request Adapter of Alamofire 中添加一个 GET 参数。但是在请求适配器中,我只能添加 HTTPHeader 字段。

目前我的request adapter 看起来像:

// MARK: - RequestAdapter

func adapt(_ urlRequest: URLRequest) throws -> URLRequest 
    if let url = urlRequest.url, url.lastPathComponent.hasPrefix(baseURLString) 
        var urlRequest = urlRequest

        // Want to inject param here
        // e.g. urlRequest.addParam(param: "session", value: sessionToken")

        return urlRequest
    

    return urlRequest

我为路径配置了一个路由器,但由于我希望我的 AuthHandler 负责所有与身份验证相关的东西,所以我想注入我的 sessionToken。这确保与RequestRetrier 一起处理任何与 HTTP 401 相关的错误。

更改 urlRequest 的最佳方法是什么?

【问题讨论】:

【参考方案1】:

你可以试试

let params: Parameters = ["session": sessionToken]
return URLEncoding.default.encode(urlRequest, with: params)

(或)

return URLEncoding.queryString.encode(urlRequest, with: params)

谢谢 斯里拉姆

【讨论】:

如果我在创建Alamofire请求时已经设置了一些参数,这只是添加还是替换它们? @Augie 它通过编码参数并将它们应用于现有请求来创建 URL 请求。

以上是关于在 Alamofire 的请求适配器中添加 GET 参数的主要内容,如果未能解决你的问题,请参考以下文章

无法通过使用 Alamofire 的参数的 GET 请求成功

没有调用 Alamofire 请求拦截器

在 Alamofire 中使用之前对 URL 进行编码

从 GET 请求中解析 JSON 数组 Alamofire Swift 2

使用 Alamofire 删除附加在 URL 末尾的 ?=

Alamofire 4 重试器和适配器无法看到更改的 accessToken