Moya中的参数编码
Posted
技术标签:
【中文标题】Moya中的参数编码【英文标题】:Parameter Encoding in Moya 【发布时间】:2020-03-19 09:27:06 【问题描述】:我的项目在 Objective-C 中,我正在将其转换为 Swift。 Objective-C 项目使用AFNetworking
进行联网。在新的 swift 项目中,我使用Moya
。
我创建了名为 PhTrackerAPI
的 Moya 目标,
public enum PhTrackerAPI
case login
case checkNumberExist(phoneno: String, code: String)
case todos
extension PhTrackerAPI: TargetType
public var baseURL: URL
return URL(string: "http://numberfinding.com/vaghani/call2loc/Api_c2l")!
public var path: String
switch self
case .login: return "/login"
case .checkNumberExist: return "/check_number_exist"
case .todos: return "/todos"
public var method: Moya.Method
switch self
case .login, .checkNumberExist:
return .post
case .todos:
return .get
public var sampleData: Data
return Data()
var parameters: [String: Any]?
switch self
case .login:
return [:]
case .checkNumberExist(let phoneno, let code):
return ["phone":phoneno,
"country_code":code]
case .todos:
return nil
public var task: Task
switch self
case .login, .checkNumberExist:
return .requestParameters(parameters: parameters!, encoding: JSONEncoding.default)
default: return .requestPlain
public var headers: [String: String]?
return ["Content-Type": "application/json"]
// 7
public var validationType: ValidationType
return .successCodes
当我向 Postman 请求 API 时,它会给出响应,但如果我通过 Moya
调用它,它会给出“找不到参数”的错误。为什么会出现这个错误?谁能帮帮我?
编辑:
【问题讨论】:
可能你有public enum
,并将所有计算属性声明为public var
,但parameters
没有明确声明为public?
这不是问题。如果我打印从这里成功传递的参数。但它没有进入后端。 @IliyaKisliy
您能附上您的邮递员请求吗? @komal-goyani
【参考方案1】:
我的 API 需要表单数据中的参数。所以我更新了如下任务,现在可以正常工作了。
var task: Task
switch self
case .checkNumberExist:
var multipartData = [MultipartFormData]()
for (key, value) in parameters!
let formData = MultipartFormData(provider: .data("\(value)".data(using: .utf8)!), name: key)
multipartData.append(formData)
return .uploadMultipart(multipartData)
default: return .requestPlain
【讨论】:
以上是关于Moya中的参数编码的主要内容,如果未能解决你的问题,请参考以下文章