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

Какой формат данных REST API?

1.2 Junior🔥 201 комментариев
#Тестирование API

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

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

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

Форматы данных в REST API

REST API (Representational State Transfer Application Programming Interface) использует различные форматы данных для представления ресурсов. Основной принцип — передача репрезентаций (представлений) ресурсов, а не самих ресурсов. Клиент взаимодействует с сервером через обмен этими представлениями.

Основные форматы обмена данными

1. JSON (JavaScript Object Notation)

Современный стандарт де-факто для REST API. Легковесный, текстовый, человекочитаемый формат, основанный на синтаксисе JavaScript.

{
  "id": 123,
  "name": "Иван Петров",
  "email": "ivan@example.com",
  "active": true,
  "roles": ["admin", "user"]
}

Преимущества:

  • Легко читается и генерируется
  • Поддерживается всеми современными языками программирования
  • Минимальный оверхед по сравнению с XML
  • Идеально подходит для веб-приложений и мобильных клиентов

2. XML (eXtensible Markup Language)

Исторически первый широко используемый формат для веб-сервисов. До сих пор используется в корпоративных и legacy-системах.

<user>
  <id>123</id>
  <name>Иван Петров</name>
  <email>ivan@example.com</email>
  <active>true</active>
  <roles>
    <role>admin</role>
    <role>user</role>
  </roles>
</user>

Преимущества:

  • Строгая структура и валидация через XSD
  • Поддержка пространств имен
  • Широкая экосистема инструментов

3. Form Data (application/x-www-form-urlencoded)

Используется для отправки простых данных форм, часто в POST и PUT запросах.

name=Иван+Петров&email=ivan%40example.com&active=true

4. Multipart Form Data

Используется для загрузки файлов вместе с другими данными формы.

Специализированные форматы

YAML ( иногда в документации)

Хотя редко используется непосредственно в HTTP-телах, часто применяется для конфигурации и документации API.

user:
  id: 123
  name: Иван Петров
  email: ivan@example.com
  active: true
  roles:
    - admin
    - user

Protocol Buffers, MessagePack, BSON

Бинарные форматы, используемые для повышения производительности в специфических сценариях (микросервисы, мобильные приложения).

HTTP-заголовки для указания формата

Ключевые заголовки для работы с форматами данных:

  • Content-Type - указывает формат отправляемых данных

    Content-Type: application/json
    Content-Type: application/xml
    Content-Type: application/x-www-form-urlencoded
    
  • Accept - указывает предпочтительные форматы получаемых данных

    Accept: application/json, application/xml;q=0.9
    

Пример HTTP-запроса с JSON

POST /api/users HTTP/1.1
Host: api.example.com
Content-Type: application/json
Accept: application/json
Authorization: Bearer token123

{
  "name": "Мария Сидорова",
  "email": "maria@example.com",
  "password": "secure123"
}

Пример HTTP-ответа

HTTP/1.1 201 Created
Content-Type: application/json
Location: /api/users/456

{
  "id": 456,
  "name": "Мария Сидорова",
  "email": "maria@example.com",
  "created_at": "2024-01-15T10:30:00Z"
}

Практические аспекты для QA Engineer

При тестировании REST API важно проверять:

  1. Поддержку различных форматов - API может поддерживать несколько форматов
  2. Валидацию Content-Type - сервер должен корректно обрабатывать заголовки
  3. Обработку ошибок формата - невалидный JSON/XML должен получать адекватный HTTP-статус (обычно 400 Bad Request)
  4. Кодировку символов - особенно важно для multilingual приложений
  5. Размеры данных - ограничения на максимальный размер запроса/ответа

Тенденции и лучшие практики

  • JSON как стандарт по умолчанию для публичных API
  • Единый формат в рамках одного API для consistency
  • Версионирование API через заголовки или URL для эволюции форматов
  • HATEOAS (Hypermedia as the Engine of Application State) - включение ссылок на связанные ресурсы в ответы

Для QA Engineer понимание форматов данных критически важно для создания эффективных тестов, работы с инструментами тестирования (Postman, REST-assured, Supertest) и анализа проблем, связанных с сериализацией/десериализацией данных.

Какой формат данных REST API? | PrepBro