Ответ
REST (Representational State Transfer) — это архитектурный стиль, то есть набор правил и ограничений для построения распределенных систем. Он не привязан к конкретной технологии, а описывает принципы взаимодействия компонентов.
Ключевые принципы REST:
- Клиент-серверная модель: Четкое разделение между клиентом (запрашивает ресурсы) и сервером (предоставляет ресурсы).
- Отсутствие состояния (Stateless): Каждый запрос от клиента должен содержать всю необходимую информацию для его выполнения. Сервер не хранит состояние клиента между запросами.
- Кэширование: Ответы сервера должны быть помечены как кэшируемые или некэшируемые.
- Единообразие интерфейса: Общие правила взаимодействия (использование стандартных 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 — это реальное здание, построенное по этому чертежу.