Попытка отправить данные в мою postgreSQL базу данных с использованием Vapor и Swift.
Вот пример кода (Swift Struct в качестве тела запроса)
struct ToDoResponseModel: Codable {
var id: Int
var Name: String
var isComplete: Bool
}
let url = URL(string: "http://localhost:8080/todos")
guard let requestUrl = url else { fatalError() }
var request = URLRequest(url: requestUrl)
request.httpMethod = "POST"
// Set HTTP Request Header
request.setValue("application/json", forHTTPHeaderField: "Accept")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let newTodoItem = ToDoResponseModel(id: 300, Name: "Urgent task 2", isComplete: true)
do {
let jsonData = try JSONEncoder().encode(newTodoItem)
request.httpBody = jsonData
}catch let jsonErr{
print(jsonErr)
}
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
if let error = error {
print("Error took place \(error)")
return
}
guard let data = data else {return}
do {
let todoItemModel = try JSONDecoder().decode(ToDoResponseModel.self, from: data)
print("Response data:\n \(todoItemModel)")
print("todoItemModel Name: \(todoItemModel.Name)")
print("todoItemModel id: \(todoItemModel.id )")
} catch let jsonErr {
print(jsonErr)
}
}
task.resume()
Но я столкнулся со следующей ошибкой :
keyNotFound (CodingKeys (stringValue: "id", intValue: nil), Swift.DecodingError.Context (codingPath: [], debugDescription: "Нет значения, связанного с ключом CodingKeys (stringValue) : \ "id \", intValue: nil) (\ "id \"). ", underError: nil))
Исправлена ошибка в этой строке:
let todoItemModel = try JSONDecoder().decode(ToDoResponseModel.self, from: data)
и Vapor посылает мне:
[ОШИБКА] DecodingError.keyNotFound: значение, необходимое для ключа 'IsComplete'. (ErrorMiddleware.swift: 26)