Проверьте статус ответа без Alamofire - PullRequest
0 голосов
/ 04 сентября 2018

Я следовал руководству по извлечению чего-либо из Firebase. Парень из видео сказал, что, возможно, вам следует проверить статус ответа 200 (HTTP OK). Каковы преимущества проверки этого и есть ли способ без Alamofire?

Код выглядит так:

guard let url = URL(string: profileImageUrl) else { return }

URLSession.shared.dataTask(with: url) { (data, response, err) in
    if let err = err { print("Failed to fetch the profile image:", err); return }

    //check for response status here

    guard let data = data else { return }
    let image = UIImage(data: data)

    DispatchQueue.main.async {
        self.profileImage.image = image
    }

    }.resume()
}

1 Ответ

0 голосов
/ 04 сентября 2018

Большинство используемых нами API имеют свои собственные наборы кодов состояния, возвращаемых при запросе контента. Для простого использования, такого как ваш пример, этого должно быть достаточно, чтобы не использовать его, но в больших приложениях код имеет свои значения, и клиент должен правильно их обрабатывать. Есть много ресурсов, из которых вы можете прочитать о преимуществах кодов состояния.

Вы можете проверить код состояния из Задачи URLSession следующим образом:

guard let url = URL(string: profileImageUrl) else { return }

URLSession.shared.dataTask(with: url) { (data, response, err) in
  if let err = err { print("Failed to fetch the profile image:", err); return }

   //check for response status here
   if let httpResponse = response as? HTTPURLResponse {
        print(httpResponse.statusCode)
    }

  guard let data = data else { return }
  let image = UIImage(data: data)

  DispatchQueue.main.async {
      self.profileImage.image = image
  }

  }.resume()
}

Поскольку HTTPURLResponse является подклассом URLResponse и отвечает за доступ к информации о нагрузке HTTP, вы можете легко привести ответ и получить statusCode

...