CRUD exampleをBaseとして使用して、Alamofireリクエストに対してJSON形式のPOSTパラメータを実行するにはどうすればよいですか?パラメータを送信できません。以下はAlamofire CRUD POST a 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
型としてパラメータを送信するので、私の問題は、シリアライズ時だと思います...
あなたが迅速3を使用していますか? 1)URL EX生成:http://test.com/preferences/update?_format=json&_authorization=testkey -base URLます。http://テストを –
はい、私は私が望む迅速な3 –
を使用しています。 COM -path:/環境設定/ -query文字列更新:_format、承認 2)送信をJSON: [ "データ":[ "アイテム":[[ "名前": "items_ids"、 "値": "1,2,3"]]]] 私はルータの発電機でこれを行うことはできません。 –