JavaRush /Курсы /Модуль 3: React /Введение в REST API — что такое REST, принципы RESTful-ди...

Введение в REST API — что такое REST, принципы RESTful-дизайна

Модуль 3: React
11 уровень , 0 лекция
Открыта

Что такое REST API?

REST (Representational State Transfer) — это архитектурный стиль взаимодействия между клиентом и сервером. Если объяснять простыми словами, REST — это набор правил и принципов, которые помогают нам общаться с сервером как с официантом в ресторане. Вы даёте официанту заказ (HTTP-запрос), он приносит вам еду (данные с сервера).

REST API — это программный интерфейс, реализованный в соответствии с принципами REST. Он позволяет вашему приложению обмениваться данными с сервером через HTTP-протокол, используя стандартные методы, такие как GET, POST, PUT, DELETE и другие.

Например:

  • Вы открываете приложение, чтобы посмотреть список фильмов. Приложение отправляет GET-запрос на сервер, а сервер возвращает JSON с фильмами.
  • Вы добавляете новый фильм в список. Приложение отправляет POST-запрос с данными о фильме, а сервер отвечает, что фильм успешно добавлен.

Таким образом, REST API играет ключевую роль в общении клиента с сервером.

Принципы RESTful-дизайна

Чтобы считать API действительно RESTful, нужно следовать определённым принципам. Рассмотрим основные из них.

1. Stateless (отсутствие состояния)

Каждый запрос должен быть независимым и содержать всю необходимую информацию. Сервер не должен хранить состояние клиента между запросами. Это делает REST масштабируемым и лёгким для тестирования.

Представьте, что каждый раз, заходя в магазин, вы объясняете кассиру, кто вы, что вы хотите и почему. Да, это немного утомительно, но зато в магазине могут обслуживать миллионы клиентов независимо друг от друга.

2. Client-Server (клиент-сервер)

В REST клиент и сервер разделены. Клиент отвечает за пользовательский интерфейс, сервер — за данные. Такое разделение позволяет обновлять интерфейс и серверную часть независимо друг от друга.

Представьте, что клиент — это ресторанный зал, а сервер — кухня. Официант передаёт заказ (запрос) на кухню, а повара готовят блюдо (ответ). Официант не лезет на кухню, а повара не идут обслуживать гостей.

3. Uniform Interface (единый интерфейс)

REST предполагает, что все компоненты системы взаимодействуют через единый интерфейс. Это достигается благодаря:

  • Использованию стандартных HTTP-методов (GET, POST, PUT, DELETE).
  • Чётким правилам для работы с ресурсами (например, "/movies", "/users").
  • Обмену данными в формате JSON или XML (сегодня чаще JSON).

4. Cacheable (кэшируемость)

Ответы сервера могут быть кэшируемыми. Это означает, что клиент может временно сохранять данные, чтобы уменьшить количество запросов и ускорить работу.

Например, если вы уже загрузили список фильмов, приложение может показывать данные из кэша, пока вы не обновите страницу.

5. Layered System (многоуровневая система)

REST допускает использование промежуточных серверов для распределения нагрузки, кэширования или безопасности. Клиент работает с одним "видимым" сервером, даже если за ним скрывается сложная система.

HTTP-методы в REST

REST опирается на стандартные HTTP-методы, которые выступают аналогами действий над данными.

Метод Назначение Пример
GET Получить данные с сервера (без изменения состояния). Получить список фильмов.
POST Отправить данные на сервер для создания нового ресурса. Добавить новый фильм.
PUT Обновить существующий ресурс или создать новый, если он отсутствует. Обновить описание фильма.
DELETE Удалить существующий ресурс. Удалить фильм из базы данных.
PATCH Частично обновить ресурс. Изменить только название фильма.

Как выглядит RESTful API в реальном мире?

Представьте, что у нас есть сервер, работающий с данными фильмов. Вот что он может делать:

База API: https://api.movies.com

  1. Получить все фильмы:

    GET /movies
    

    Ответ:

    [
       { "id": 1, "title": "Inception", "year": 2010 },
       { "id": 2, "title": "The Matrix", "year": 1999 }
    ]
    
  2. Получить конкретный фильм:

    GET /movies/1
    

    Ответ:

    { "id": 1, "title": "Inception", "year": 2010 }
    
  3. Добавить новый фильм:

    POST /movies
    

    Тело запроса:

    { "title": "Tenet", "year": 2020 }
    

    Ответ:

    { "id": 3, "title": "Tenet", "year": 2020 }
    
  4. Обновить фильм:

    PUT /movies/3
    

    Тело запроса:

    { "title": "Tenet", "year": 2021 }
    

    Ответ:

    { "id": 3, "title": "Tenet", "year": 2021 }
    
  5. Удалить фильм:

    DELETE /movies/3
    

    Ответ:

    { "message": "Film deleted successfully." }
    

Почему REST стал таким популярным?

  • Простота в понимании: REST API легко строить и использовать благодаря стандартным HTTP-методам.
  • Гибкость: он работает с любым клиентом, будь то браузер, мобильное приложение или IoT-устройство.
  • Производительность: возможность кэширования и независимость запросов делает REST быстрым.
  • Легкость масштабирования: благодаря Stateless-принципу серверы легко масштабируются.

Подводные камни REST

Как и у любой технологии, у REST есть свои особенности, которые важно учитывать:

  • Переход между клиентом и сервером через сеть (HTTP) может быть медленным для запросов с большими объёмами данных.
  • REST API не всегда легко поддерживать, если ресурсы становятся сложными.
  • Отсутствие состояния может увеличить объём данных в запросах (например, каждый запрос должен содержать токен авторизации).

Далее мы разберёмся, как пользоваться встроенными инструментами, такими как fetch, для отправки запросов и работы с REST API.

1
Задача
Модуль 3: React, 11 уровень, 0 лекция
Недоступна
Создание простого REST API
Создание простого REST API
1
Задача
Модуль 3: React, 11 уровень, 0 лекция
Недоступна
Реализация CRUD
Реализация CRUD
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ