RESTful способ вернуть информацию о местоположении - PullRequest
0 голосов
/ 04 октября 2011

Я написал REST-сервер на основе RESTEasy .

В некоторых ресурсах коллекции объектов возвращаются вместо отдельных объектов: метод, который отвечает на URL-адрес "/users/{user_id} "возвращает один объект" user ", но метод, который отвечает на URL" /users ", возвращает всех пользователей.В первом случае я могу включить HTTP-заголовок «Content-Location: URL» (хотя это избыточно, поскольку у вызывающего абонента правильный URL).В последнем случае каждый элемент в возвращенной коллекции имеет свое собственное местоположение.Я думал о добавлении атрибута XML к каждому элементу, указывающего его местоположение:

<users>
  <user location="/users/1234">
    ...
  </user>
  <user location="/users/5678">
    ...
  </user>
</users>

Есть ли какой-нибудь традиционный способ вернуть эту информацию?

1 Ответ

1 голос
/ 04 октября 2011

Это очень распространенная практика при разработке гипермедиа API.Это также очень рекомендуется.Не существует официального «правильного» способа сделать это, однако один тип носителя, который имеет очень четкие правила относительно того, как вы можете это сделать, - это hal.См. http://stateless.co/hal_specification.html

В половине ваш документ будет выглядеть следующим образом:

<resource href="/users">
    <resource rel="item" href="/users/1234">
        ...
    </resource>
    <resource rel="item" href="/users/5678">
        ...
    </resource>
</resource>

Я выбрал термин "элемент", потому что он был стандартизирован псевдо, но вы могли бы поставить свою собственную связь,Есть только несколько правил, которые вы должны соблюдать при определении ваших собственных отношений ссылок.(Подробнее см. RFC5988 )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...