Alamofire 5: несколько типов кодирования для запроса
Аналогично этому Несколько типов кодирования для запроса Alamofire
и это несколько типов кодирования для запроса в Alamofire 4
Мне нужно получить некоторые параметры в строке запроса и некоторые json в htpbody
так что у меня есть что-то вроде этого
public func asURLRequest() throws -> URLRequest
{
let combined = baseUrl.absoluteString + path
guard let url_ = URL(string: combined) else {
print ("invalid url \(combined)")
throw AFError.parameterEncodingFailed(reason: .missingURL)
}
guard var components = URLComponents(url: url_, resolvingAgainstBaseURL: false) else {
print ("invalid url \(url_)")
throw AFError.parameterEncodingFailed(reason: .missingURL)
}
// var items: [URLQueryItem] = components.queryItems ?? []
// for (key, value) in query_parameters ?? [:]{
// guard let value = value as? String else {
// assertionFailure()
// continue
// }
// let item = URLQueryItem(name: key, value: value)
// items.append(item)
// }
// components.queryItems = items
guard let url = components.url else {
print ("invalid compontns \(components)")
throw AFError.parameterEncodingFailed(reason: .missingURL)
}
let originalRequest: URLRequest = try URLRequest(url: url, method: method, headers: headers)
let params: Parameters = parameters
let uRLRequest = try parameterEncoding.encode(originalRequest, with: params)
if let query_parameters = query_parameters {
let encodedURLRequest = try URLEncoding.default.encode(uRLRequest, with: query_parameters)
return encodedURLRequest
}
return uRLRequest
}
но параметры запроса не кодируются:
https://somehostsomewhere/imobile/LoyaltyProxy?language=ru&path=v1/user_app/user/balance
в пути есть косая черта:-[
Обсуждение здесь https://github.com/Alamofire/Alamofire/issues/374 умерло в 2017 году
Я хочу ошибиться, но подозреваю, что в будущем будет тема для alamofire 6, 7 и 8