如何使用CRUD example作为Base,以JSON格式将POST参数设置为Alamofire请求?我无法发送我的参数。Alamofire CRUD POST JSON
下面是我的路由器发电机:
fileprivate enum Router: URLRequestConvertible {
case login(reqData: Data)
case preferencesIndex()
case preferencesUpdate(parameters: Parameters)
static let baseURLString = "http://test.com"
var method: HTTPMethod {
switch self {
case .login, .preferencesIndex:
return .get
case .preferencesUpdate:
return .post
}
}
var path: String {
switch self {
case .login:
return "/login"
case .preferencesIndex:
return "/preferences/list"
case .preferencesUpdate:
return "/preferences/update"
}
}
// MARK: URLRequestConvertible
func asURLRequest() throws -> URLRequest {
let url = try Router.baseURLString.asURL()
let paramsDefault: Parameters = ["_format" : "json", "_authorization" : "testkey"]
var urlRequest = URLRequest(url: url.appendingPathComponent(path))
urlRequest.httpMethod = method.rawValue
urlRequest = try URLEncoding.default.encode(urlRequest, with: paramsDefault)
switch self {
case .preferencesUpdate(let parameters):
//POST JSON
let data = try JSONSerialization.data(withJSONObject: parameters, options: [])
urlRequest.httpBody = data
urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")
default:
break
}
return urlRequest
}
}
我收到的错误如下:
Request failed with error: JSON could not be serialized because of error: The data couldn’t be read because it isn’t in the correct format.
我想我的问题是系列化的,因为我送参数Parameters
型...
是否使用SWIFT 3? –
是的,我使用SWIFT 3 –
我想: 1)生成URL 例如:http://test.com/preferences/update?_format=json&_authorization=testkey 碱基的URL:http://测试。 COM 路径:/首选项/更新 - 查询字符串:_format,授权 2)发送JSON: [ “数据”: “项目”:[ “名字”: “items_ids”, “价值”: “1,2,3”]]]] 但是我不能在我的路由器发生器中做这个.. –