В чем разница между архитектурным стилем REST и REST API?

Ответ

REST (Representational State Transfer) — это архитектурный стиль, то есть набор правил и ограничений для построения распределенных систем. Он не привязан к конкретной технологии, а описывает принципы взаимодействия компонентов.

Ключевые принципы REST:

  1. Клиент-серверная модель: Четкое разделение между клиентом (запрашивает ресурсы) и сервером (предоставляет ресурсы).
  2. Отсутствие состояния (Stateless): Каждый запрос от клиента должен содержать всю необходимую информацию для его выполнения. Сервер не хранит состояние клиента между запросами.
  3. Кэширование: Ответы сервера должны быть помечены как кэшируемые или некэшируемые.
  4. Единообразие интерфейса: Общие правила взаимодействия (использование стандартных HTTP-методов, идентификация ресурсов через URI и т.д.).

REST API (или RESTful API) — это конкретная реализация этого архитектурного стиля. Это программный интерфейс (API), который следует принципам REST для взаимодействия между клиентом и сервером, как правило, через протокол HTTP.

Пример REST API эндпоинта в Go:

// Этот обработчик следует принципам REST:
// 1. Использует стандартный HTTP-метод (GET).
// 2. Ресурс идентифицируется через URI (например, /users/{id}).
// 3. Он stateless (не хранит состояние между вызовами).
func GetUserHandler(w http.ResponseWriter, r *http.Request) {
    if r.Method != http.MethodGet {
        http.Error(w, "Метод не разрешен", http.StatusMethodNotAllowed)
        return
    }
    // ... логика получения пользователя по ID из r.URL.Path ...
    user := User{ID: "123", Name: "John Doe"}

    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(user)
}

Итог (аналогия):

  • REST — это как чертеж или свод строительных норм и правил. Он говорит, как строить.
  • REST API — это реальное здание, построенное по этому чертежу.