Какие основные HTTP методы и их характеристики?

«Какие основные HTTP методы и их характеристики?» — вопрос из категории Сети, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основные HTTP методы, их назначение и свойства:

Безопасные (не изменяют состояние сервера):

  • GET — запрос данных. Идемпотентный.
  • HEAD — аналогичен GET, но возвращает только заголовки. Идемпотентный.
  • OPTIONS — запрос поддерживаемых методов для ресурса. Идемпотентный.

Небезопасные (изменяют состояние):

  • POST — создание ресурса. Не идемпотентный.
  • PUT — полное обновление или создание ресурса с известным URI. Идемпотентный.
  • PATCH — частичное обновление ресурса. Не идемпотентный.
  • DELETE — удаление ресурса. Идемпотентный.

Почему важно различать идемпотентность? Повторный вызов идемпотентного метода (GET, PUT, DELETE) не должен приводить к разным результатам на стороне сервера. Это критично для надежности и автоматических повторов запросов.

Пример на Swift (URLSession):

let url = URL(string: "https://api.example.com/users/1")!
var request = URLRequest(url: url)
request.httpMethod = "PUT" // Идемпотентное обновление
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let userData = ["name": "Alice"]
request.httpBody = try? JSONSerialization.data(withJSONObject: userData)