October 10

REST, JSON

Сегодня мы поговорим о REST и JSON — ключевых понятиях в мире веб-разработки. Эти технологии позволяют создавать современные приложения, которые легко взаимодействуют друг с другом.

Что такое REST?

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

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

Типы HTTP-запросов

Давайте разберёмся, что делают основные типы запросов в REST:

  • GET — запрашивает данные с сервера. Это как запрос информации, например, получение списка товаров в магазине.
  • POST — отправляет новые данные на сервер. Этот запрос используют, когда ты регистрируешься на сайте или добавляешь новый товар.
  • PUT — обновляет существующие данные. Здесь нужно передать все данные объекта, который ты обновляешь.
  • PATCH — обновляет часть данных объекта. Например, если нужно изменить только цену товара, но не все данные.
  • DELETE — удаляет данные с сервера. Этот запрос удаляет конкретный объект, как, например, удаление товара из корзины.

Идемпотентность

Идемпотентность — это сложное слово для простой идеи. Оно означает, что результат операции не изменится, если её выполнить несколько раз подряд.

Пример: если вы делаете запрос GET, чтобы получить список товаров, сколько бы раз вы это ни сделали — результат будет одинаковым. То же самое с PUT: обновление информации о товаре не изменится, если повторить операцию с теми же данными. POST обычно не идемпотентен, потому что при каждом запросе создаётся новый ресурс (например, новый аккаунт пользователя).

Что такое JSON?

JSON (JavaScript Object Notation) — это текстовый формат для передачи данных между клиентом и сервером. JSON прост в использовании и чтении человеком. Он похож на объекты в языке JavaScript и состоит из ключей и значений:

{ "name": "John", "age": 25, "isStudent": true }

JSON используют для передачи данных в веб-приложениях. Например, когда вы запрашиваете данные о пользователе, сервер может вернуть ответ в формате JSON.

Что такое XML?

XML (Extensible Markup Language) — это другой формат для передачи данных. Он более сложный, чем JSON, и выглядит как HTML:

<user> <name>John</name> <age>25</age> <isStudent>true</isStudent> </user>

XML использовался до того, как стал популярен JSON. Он до сих пор встречается, но из-за своей громоздкости уступает JSON.

Разница между PUT и PATCH

Оба этих запроса используются для обновления данных, но они работают по-разному:

  • PUT требует, чтобы вы отправили полный объект с новыми данными. Например, если вы обновляете товар, нужно передать все его данные, даже те, которые не изменились.
  • PATCH позволяет обновить только часть данных. Например, если нужно поменять только цену товара, а не все его свойства.

Представьте, что у вас есть объект товара:

{ "id": 1, "name": "Laptop", "price": 1000 }

PUT потребует, чтобы вы отправили весь объект:

{ "id": 1, "name": "Laptop", "price": 900 }

PATCH позволит отправить только изменённые данные:

{ "price": 900 }

Как передать картинку в REST?

Картинки и файлы в REST-сервисах передаются обычно через POST-запрос. Чтобы передать файл, используют формат multipart/form-data. Это особый формат, который позволяет передавать как текстовые данные, так и бинарные файлы.

Пример отправки изображения:

POST /upload HTTP/1.1 Host: example.com Content-Type: multipart/form-data; boundary=boundary123

--boundary123 Content-Disposition: form-data; name="image"; filename="photo.jpg" Content-Type: image/jpeg

<файл-картинка> --boundary123—

Пример работы REST

Давайте рассмотрим, как работает REST на примере интернет-магазина.

1. Вы отправляете GET-запрос на сервер, чтобы получить список товаров:

GET /products

Сервер отвечает:

[ {"id": 1, "name": "Laptop", "price": 1000}, {"id": 2, "name": "Phone", "price": 500} ]

2. Вы хотите добавить новый товар. Для этого отправляется POST-запрос:

POST /products
Данные, которые ты отправляешь:

{ "name": "Tablet", "price": 700 }

Сервер создаёт новый товар и возвращает его данные:

{ "id": 3, "name": "Tablet", "price": 700 }

3. Если нужно изменить цену товара, отправляешь PATCH-запрос:

PATCH /products/3

Данные для обновления:

{ "price": 650 }

Сервер обновляет цену товара и отвечает:

{ "id": 3, "name": "Tablet", "price": 650 }

Что такое timestamp?

Timestamp — это отметка времени, которая используется для фиксации даты и времени события. В REST timestamp часто используется для отображения времени создания или обновления данных.

Пример timestamp: 2024-10-10T12:34:56Z. Здесь:

  • 2024-10-10 — дата (год-месяц-день),
  • T — разделитель между датой и временем,
  • 12:34:56 — время (часы:минуты:секунды),
  • Z — это символ времени по Гринвичу (UTC).

Заключение

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