Некоторые типы носителей являются расширениями других типов носителей. Такие типы носителей часто используют + в своем имени, чтобы сигнализировать об этом. Например, application/atom+xml расширяет общий xml, а application/hal+json расширяет универсальный json.
Мой вопрос: что делать, если клиент запрашивает общий тип мультимедиа, а сервер хочет ответить одним из расширенных типов мультимедиа? Например, если запрос имеет заголовок Accept: application/json
и сервер хочет ответить application/hal+json, должен ли сервер...
... доставить обычный JSON с
Content-type: application/json
, т.е. не включать_links
или_embedded
? Это то, что просил клиент, и это то, что он получает. Если вам нужен HAL, попросите об этом.... доставить представление HAL с помощью
Content-type: application/json
? HAL, в конце концов, это JSON, и это то, о чем просил клиент. Клиент счастлив и может игнорировать биты, которые он не понимает.... доставить представление HAL с помощью
Content-type: application/hal+json
? Как и 2., клиент получает то, что хочет, и может игнорировать биты, которые он не понимает. Но есть также ключ к тому, что клиент может получить больше от представления.
Я предпочитаю 3. Но есть ли спецификация, передовая практика или общепринятый подход, которые могут дать рекомендации по выбору лучшего?