Думайте прагматично. Тип MIME определяется как «Тип медиа в Интернете - это идентификатор из двух частей для стандартизации форматов файлов через Интернет». Это означает, что если формат данных изменяется, (TXT-> HTML-> JSON-> XML-> YAML-> CSV -> ...) тип MIME необходимо изменить.
Тем не менее, есть и другие вполне допустимые виды использования, одно из которых было упомянуто выше Джошуа Белденом Вот пример , как GitHub использует MIME-тип для определения версии API.
Текущая версия
По умолчанию все запросы получают версию API версии 3. Мы
рекомендуем вам явно запросить эту версию через Accept
заголовок.
Принять: application / vnd.github.v3 + json
Имеет смысл, что компоновка данных запроса v2, отправленного в версию API v3, будет несовместимой, даже если они находятся на одном и том же URL-адресе (и наоборот). Это также помогает уменьшить изменения, необходимые для перехода от одной версии API к другой (например, вам не нужно обновлять URL).
Тем не менее, это не означает, что ваше приложение должно по умолчанию использовать пользовательский тип MIME для того, чтобы "обеспечить будущее" для API конкретной версии. Если ваше приложение не имеет большого внешнего API-интерфейса со многими общедоступными потребителями, вам, скорее всего, не нужен пользовательский тип MIME версии.
Кроме того, ваши конечные точки REST API должны определять структуру производимых и потребляемых данных, а не тип MIME. Например, GET "/ Customers / 5" должен создавать только те данные, которые были сериализованы из вашей сущности Customer. И ПОСТ "/ Оговорки"
следует использовать только те данные, которые будут десериализованы для вашей сущности резервирования. Это означает, что сериализация вашей конечной точки будет обрабатывать проверку синтаксиса и должна возвращать код уровня 400 и объяснять, что предоставленные данные не структурированы должным образом.
Еще один пример из API GitHub, который подчеркивает это поведение.
HTTP/1.1 422 Unprocessable Entity
Content-Length: 149
{
"message": "Validation Failed",
"errors": [
{
"resource": "Issue",
"field": "title",
"code": "missing_field"
}
]
}
Подводя итог, можно сказать, что большинство платформ сериализации "из коробки" ожидают обработки "application / json" и "application / xml". Хотя вы, конечно, можете добавить пользовательский тип MIME для конкретного поставщика, зачем делать это, если у вас нет веских причин для этого?
Извините, если я только что создал вопрос зомби с этим ответом.