Вопрос

Учитывая эту услугу:

POST /hotel HTTP/1.1

<hotel>
  <a>aaa</a>
  <b>bbb</b>
  <c>ccc</c>
</hotel>

HTTP/1.1 201 CREATED
Location: /hotel/123

Когда мы обрабатываем запрос на сервере, мы проверяем XML hotel в запросе на соответствие DTD.

Вопрос в том, что в качестве наилучшей практики REST клиент должен ссылаться на DTD в запросе (как это обычно делается при создании документа XML на основе DTD)? Или это не обязательно? DTD будет описан в документации API, поэтому разработчики клиентской службы будут знать подробности проверки DTD.

Это было полезно?

Решение

Ну, вы, конечно, могли бы выплевать 400 Bad Request , если тело запроса не проходит проверку DTD, но я бы не требовал наличия ссылки DTD. Вы должны разрешить его исключение и использовать его, если он там есть, но я также не смог бы выполнить запрос, если они указывают неправильный DTD. Конечно, сообщение об ошибке должно указывать ожидаемое DTD.

Возможно, вы захотите пропустить строгую проверку соответствия, если DTD пропущен, так как это скорее то, чего хотят люди при настройке программного обеспечения, но по соображениям производительности может потребоваться отключить их после того, как они знаю, что все работает.

Другие советы

Насколько мне известно, REST ничего не может сказать о содержимом тела POST.

Очевидно, что вы все равно должны проверить XML на сервере, поэтому лучшее, что вы можете сделать, - это рекомендовать клиенту проверять XML на соответствие DTD перед его отправкой, чтобы сэкономить время и пропускную способность. Тем не менее, у вас действительно нет способа обеспечить его соблюдение.

Я думаю, что вы как писатель службы должны принять запрос независимо от того, относится ли он к DTD, но это только мое мнение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top