← Назад к вопросам

Как называется аналог XML в REST?

1.3 Junior🔥 151 комментариев
#Интеграции и API

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Аналог XML в REST: JSON

JSON (JavaScript Object Notation) это основной формат обмена данными в REST API, аналог XML.

История и эволюция

В начале 2000-х XML был стандартом для веб-сервисов (SOAP, WSDL). Это был мощный, но громоздкий формат с кучей тегов.

Пример XML:

<?xml version="1.0"?>
<user>
  <id>123</id>
  <name>John Doe</name>
  <email>john@example.com</email>
  <roles>
    <role>admin</role>
    <role>user</role>
  </roles>
</user>

С приходом REST и мобильных приложений появилась потребность в более легком формате. JSON стал стандартом благодаря:

  • Простоте парсинга
  • Меньшему размеру (меньше трафика)
  • Совместимости с JavaScript
  • Читаемости

JSON в REST

Тот же пример на JSON:

{
  "id": 123,
  "name": "John Doe",
  "email": "john@example.com",
  "roles": ["admin", "user"]
}

Как видишь, JSON компактнее и понятнее.

Структура JSON

Основные типы данных:

  • Object {} - набор пар ключ-значение
  • Array [] - список значений
  • String "text" - текст в кавычках
  • Number 123, 45.67 - числа (целые и дробные)
  • Boolean true, false - логические значения
  • Null null - отсутствие значения

Пример сложного объекта:

{
  "id": 123,
  "user": {
    "name": "John",
    "email": "john@example.com"
  },
  "orders": [
    {
      "id": "order_1",
      "amount": 99.99,
      "status": "completed"
    },
    {
      "id": "order_2",
      "amount": 49.99,
      "status": "pending"
    }
  ],
  "is_active": true,
  "metadata": null
}

JSON в HTTP запросах

Header указывает формат:

Content-Type: application/json
Accept: application/json

Пример POST запроса:

POST /api/v1/users HTTP/1.1
Host: api.example.com
Content-Type: application/json

{
  "name": "Jane Doe",
  "email": "jane@example.com",
  "role": "user"
}

Пример ответа:

HTTP/1.1 201 Created
Content-Type: application/json

{
  "id": 456,
  "name": "Jane Doe",
  "email": "jane@example.com",
  "role": "user",
  "created_at": "2024-01-15T10:00:00Z"
}

Преимущества JSON vs XML

Размер файла

  • XML обычно в 2-3 раза больше
  • JSON компактнее благодаря отсутствию closing tags

Парсинг

  • JSON: const data = JSON.parse(response);
  • XML: нужен XML parser

Поддержка языков

  • JSON нативно поддерживается в JavaScript, Python, Java и всех современных языках
  • XML менее удобен

Скорость

  • JSON парсится быстрее
  • Меньше трафика

Читаемость

  • JSON визуально проще
  • Разработчики быстрее понимают структуру

Когда XML еще используется

1. Наследие системы (Legacy) Энтерпрайз системы иногда еще используют XML (SOAP, WSDL).

2. Специфические форматы

  • SVG (векторная графика) - XML
  • RSS/Atom (подписки) - XML
  • Конфигурационные файлы (pom.xml, web.xml в Java) - XML

3. Обмен с внешними системами Некоторые legacy API требуют XML.

Альтернативы JSON

1. Protocol Buffers (protobuf) От Google, очень компактный и быстрый. Используется для высоконагруженных систем.

2. MessagePack Бинарный формат, компактнее JSON.

3. YAML Человеко-читаемый формат, но медленнее JSON. Используется в конфигах.

4. CBOR Бинарный format, похож на JSON по структуре.

Но JSON остается стандартом благодаря балансу между простотой и функциональностью.

JSON Schema

Для валидации структуры JSON используется JSON Schema:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "id": { "type": "integer" },
    "name": { "type": "string" },
    "email": { "type": "string", "format": "email" },
    "roles": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["id", "name", "email"]
}

Это позволяет:

  • Валидировать входящие данные
  • Документировать структуру API
  • Генерировать код (TypeScript types, Pydantic models)

Практика для BA

Когда я проектирую API, я:

  1. Определяю структуру в JSON
{
  "POST /api/v1/products": {
    "request": {
      "name": "Product name",
      "price": 99.99,
      "category_id": 5
    },
    "response": {
      "id": 123,
      "name": "Product name",
      "price": 99.99,
      "created_at": "2024-01-15T10:00:00Z"
    }
  }
}
  1. Показываю в документации Есть примеры для каждого endpoint.

  2. Генерирую JSON Schema Для валидации на backend.

Почему JSON победил

Простота - разработчик за 5 минут понимает структуру Компактность - меньше трафика Универсальность - все языки его поддерживают Интероперабельность - работает везде

Заключение

JSON это современный стандарт для REST API. Он заменил XML благодаря простоте и эффективности. Практически все современные API используют JSON. XML остается только в legacy системах или специфических форматах.

Для BA важно понимать структуру JSON и уметь читать примеры API, чтобы правильно проектировать требования для бэкенда.

Как называется аналог XML в REST? | PrepBro