Недавно я разрабатывал RESTful API и хочу использовать поле заголовка Link
для реализации HATEOAS.
Все это прекрасно и работает без каких-либо реальных проблем, но я хочу упростить работу клиентов API.
Например, заголовок Link
может выглядеть так:
Link: <https://api.domain.com/orders/{id}>; rel="https://docs.domain.com/order"
В этом случае клиент должен будет найти ссылку, выполнив поиск значения https://docs.domain.com/order
в атрибуте rel
.
Это работает, но, поскольку URI для документов может измениться, он ненадежен и из-за длины делает его немного непрактичным в качестве ключа для поиска.
Поэтому я хочу попробовать использовать CURIE, чтобы вместо этого сделать что-то вроде этого:
Link: <https://api.domain.com/orders/{id}>; rel="[rc:order]"
Таким образом, проблема изменения URI по большей части смягчается, и он намного компактнее, что упрощает поиск клиентом.
Моя проблема в том, что, поскольку я использую поле заголовка Link
для реализации HATEOAS, я считаю, что было бы наиболее последовательно также включать CURIE в качестве поля заголовка HTTP, а не вводить метаданные в тело ответа.
Поскольку весь API использует стандартные поля заголовка HTTP и коды состояния для всех своих метаданных (разбивка на страницы, управление версиями и т. д.), я бы предпочел не вводить метаданные в тело ответа только для того, чтобы определить CURIE.
Но если я использую поля заголовка HTTP, какое поле следует использовать для CURIE?
Есть ли стандартный способ сделать это с полями заголовка HTTP?
Если нет, должен ли я просто использовать настраиваемое поле заголовка, например X-Curie: <https://docs.domain.com>; name="rc"
, и просто задокументировать его где-нибудь для клиентов?
Я осмотрелся, и большинство ресурсов относятся либо к XML, либо к стандарту HAL, поэтому любая информация об этом в отношении полей заголовка HTTP будет оценена.