Как проверить REST-запрос? - PullRequest
1 голос
/ 27 октября 2009

С учетом этой услуги:

POST /hotel HTTP/1.1

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

HTTP/1.1 201 CREATED
Location: /hotel/123

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

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

Ответы [ 2 ]

2 голосов
/ 29 октября 2009

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

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

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

1 голос
/ 29 октября 2009

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

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

...