Ответ
Тип контента указывается в заголовке Content-Type. Он сообщает серверу (в запросе) или клиенту (в ответе), в каком формате представлены данные в теле сообщения (body).
Распространенные значения:
application/json— для данных в формате JSON.application/x-www-form-urlencoded— для данных HTML-форм.multipart/form-data— для загрузки файлов.text/html,image/png— для конкретных типов контента.
Пример установки заголовка в URLRequest:
var request = URLRequest(url: url)
request.httpMethod = "POST"
// Ключевой заголовок для JSON
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let userData = ["name": "John"]
request.httpBody = try JSONEncoder().encode(userData)
Пример проверки типа ответа:
URLSession.shared.dataTask(with: request) { data, response, error in
guard let httpResponse = response as? HTTPURLResponse,
httpResponse.statusCode == 200,
let mimeType = httpResponse.mimeType,
mimeType == "application/json" else {
// Обработка ошибки несоответствия типа
return
}
// Декодируем JSON-данные
let model = try JSONDecoder().decode(Model.self, from: data!)
}.resume()
Важно: Для multipart/form-data значение заголовка также включает уникальный разделитель (boundary), например: Content-Type: multipart/form-data; boundary=Boundary-ABC123.