Возвращаете истину / ложь в REST-сервисе? - PullRequest
7 голосов
/ 28 апреля 2011

Я разрабатываю службу REST, и необходимо проверить, правильно ли введен адрес.Я думаю о том, как разработать интерфейс REST для проверки правильности полного адреса улицы.

У меня есть служба / address, и я могу, например, сделать POST /address/validation, который возвращает xml / json true или false, но мне кажется, что это не совсем REST-full.

Другим способом было бы сделать GET /address?street=xxx&nr=xxx&zipcode=xxx (и еще несколько параметров) и вернуть 200 OK, если правильно, или 404 Не найдено, если не правильно, что может быть более полно REST?

Я начал делать вариант 1), но чем больше я думаю об этом, вариант 2) с GET чувствует себя лучше ...

Идеи?

Ответы [ 3 ]

7 голосов
/ 28 апреля 2011

С точки зрения RESTful вы действительно возвращаете новый ресурс, называемый AddressValidation, который будет содержать ваше истинное или ложное значение. Поэтому одним из подходов было бы сделать POST для /addressvalidation?street=xxx и т. Д. Я бы с радостью возвратил результат в виде JSON или использовал коды состояния. Я не уверен, что 404 подходит, хотя; Возможно, вы захотите посмотреть это обсуждение кодов состояния возврата проверки .

У меня такая же проблема с подходом GET /address?street=xxx&nr=xxx&zipcode=xxx, как вы предлагаете. Для меня, если он возвращает 404, это означает, что адрес буквально не найден (т.е. не существует в базе данных), а не является недействительным (например, почтовый индекс является недопустимым форматом; такого адреса не может быть ). Снова, посмотрите связанное обсуждение; кажется, что 400 является более подходящим ответом.

5 голосов
/ 28 апреля 2011

Как насчет?

GET /addressValidity?street=xxx&nr=xxx&zipcode=xxx
=> 
200 OK
Content-Type: text/plain

true
0 голосов
/ 28 апреля 2011

Я чувствую, что выполнение POST и возвращение кодов состояния (200 ОК, если правильно, или 404 Не найдено, если не правильно) более спокойны. Потому что вы НЕ ПОЛУЧАЕТЕ что-то, ПОЛУЧИТЕ, не выглядит соответствующим. Вы отправляете некоторую информацию на сервер, и она выполняет некоторую обработку (проверку) и возвращает некоторый ответ.

...