Оценивает понимание архитектурных принципов RESTful-систем.
REST (Representational State Transfer) — стиль архитектуры для веб-сервисов. Основные принципы: единообразие интерфейса (URL для ресурсов), отсутствие состояния (каждый запрос самодостаточен), кэшируемость. Например, ресурс пользователь всегда доступен по URL /api/users, а не /getUser.
6 принципов REST:
Единообразие интерфейса:
Ресурсы идентифицируются URL: /api/books/123.
Действия определяются HTTP-методами: GET (получить), POST (создать).
Stateless (без состояния):
Сервер не хранит данные сессии между запросами.
Каждый запрос содержит всю информацию (например, токен в заголовке Authorization).
Кэшируемость:
Ответы помечаются как кэшируемые (Cache-Control).
// Пример кэширования в Go
w.Header().Set("Cache-Control", "max-age=3600") // Кэш на 1 часКлиент-серверное разделение:
Фронтенд и бэкенд развиваются независимо.
Многоуровневая система:
Допускает прокси, балансировщики нагрузки.
Код по требованию (опционально):
Сервер может возвращать исполняемый код (например, JavaScript).
Пример RESTful API на Go:
func main() {
http.HandleFunc("/api/books/", handleBooks) // Единый эндпоинт для книг
func handleBooks(w http.ResponseWriter, r *http.Request) {
id := path.Base(r.URL.Path) // /api/books/123 → id="123"
switch r.Method {
case "GET":
// Получить книгу
case "DELETE":
// Удалить книгу
}
}
}Нарушение принципов:
Использование глаголов в URL: GET /api/getBook?id=1 (нарушает единообразие).
Вывод: Следование REST делает API предсказуемым и удобным для разработчиков.