今天在使用Moya时,path中含有 ? 经过编码会被转义为 %3F ,导致404请求失败,谷歌半天,找到解决办法之一是将含有 ? 的 path 放入 baseUrl中,这样就不会被转义了
下面是伪代码
var baseURL: URL {
switch self {
case .login(token: _, accessToken: _):
return URL(string: apiHost + "/api/token?")!
}
}
var path: String {
switch self {
case .login:
return ""
}
}
一次使用requestParameters 传参时,因为parameters中有一个参数是数组,URLEncoding.default 内部自动 判断了数组,并且在 key后面加了 [], 如下图
![](https://img.haomeiwen.com/i167849/2e26b78060c6a0ee.png)
所以设置encoding的时候需要设置为noBrackets
.requestParameters(parameters: ["hxIds": hxIds].merged(with: publicParams()), encoding: URLEncoding(arrayEncoding: .noBrackets))
网友评论