лучшая практика для булевых результатов REST

У меня есть ресурс

  /system/resource

И я хочу задать системе булев вопрос о ресурсе, которому нельзя ответить путем обработки на клиенте (т.е. я не могу только ПОЛУЧИТЬ ресурс и просмотреть фактические данные ресурсов - требуется некоторая обработка на бэкенде с помощью данных, не доступных клиенту). например,

  /system/resource/related/otherresourcename

Я хочу, это - любой TRUE или FALSE возврата. У кого-либо есть какие-либо примеры лучшей практики для этого типа взаимодействия?

Возможности, которые прибывают по моему мнению:

  • использование кода состояния HTTP, никакое возвращенное тело (пахнет неправильно),

  • возвратите строку обычного текста (Правда, Ложь, 1, 0) - Не уверенный, какие строковые значения соответствуют использованию, и кроме того это, кажется, игнорирует Принять тип среды и всегда возвращает простой текст

  • придумайте объект Boolean для каждого из моих типов среды поддержки и возвратите соответствующий тип (документ JSON с единственным булевым результатом, XML-документ с единственным булевым полем). Однако это кажется громоздким.

Я особенно не хочу входить в долгую дискуссию об истинном значении УСПОКОИТЕЛЬНОЙ системы и т.д. - я использовал слово REST в заголовке, потому что это лучше всего выражает общий аромат системы, которую я разрабатываю (даже если, возможно, я склоняюсь больше к RPC по веб-, а не истинному REST). Однако, если у кого-то есть некоторые мысли о том, как истинная УСПОКОИТЕЛЬНАЯ система избегает этой проблемы полностью, я был бы рад услышать их.

15
задан Andrew Patterson 28 May 2010 в 02:11
поделиться

2 ответа

Я думаю, что возврат text/plain будет самым чистым вариантом. Что касается заголовка accept, если клиент действительно не может обрабатывать простой текст, то вы можете вернуться к Json или Xml.
Лично я бы использовал строки "true" и "false". Большинство клиентских языков могут разобрать эти строки до соответствующего значения.

3
ответ дан 1 December 2019 в 05:07
поделиться

хм, затрудняюсь ответить (ваш пример для меня слишком абстрактен).

Обычно вы можете создать такую ​​логическую информацию как данные ресурса или как выделенный ресурс. Пример для домена заказов, когда вы хотите узнать, выполнен заказ или нет (логический вопрос). Остерегайтесь, это упрощенный пример (мир заказов намного сложнее;)

Проектирование состояния порядка как полезной нагрузки данных

HTTP-вызов: HTTP GET / заказы

Вернет вам 200 OK с полезной нагрузкой (формат json): {id: "1", завершено: "true"}

Проектирование состояния порядка как ресурса

HTTP-вызов: HTTP GET или HEAD / orders / completed / 1

Теперь, чтобы получить «логический» ответ, вы можете проверить, был ли статус ответа HTTP 404 или 200. 400 будет указывать на то, что заказ еще НЕ выполнен, 200 - на выполнение.

Чтобы помочь вам больше, вы должны быть более конкретными, в чем конкретно заключается ваш «логический вопрос»? что такое реальный ресурс и связанный с ним ресурс?

5
ответ дан 1 December 2019 в 05:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: