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 позволит отправить только изменённые данные:
Как передать картинку в 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-запрос на сервер, чтобы получить список товаров:
[
{"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-запрос:
Сервер обновляет цену товара и отвечает:
{
"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 — старый формат, который используется реже. А идемпотентность — это свойство запросов, которое гарантирует одинаковый результат при повторении операции.