Как правильно разработать REST API, который принимает логический аргумент? - PullRequest
0 голосов
/ 08 ноября 2018

В основном у меня есть API отдыха, как это:

/api/drive

И для PUT требуется тело, которое является «истинным» или «ложным».

Я использую среду dropwizard с Java, и boolean drive является одним из моих параметров в методе PUT моего класса ресурсов.

Все работает, как и ожидалось, но я тестировал на Postman и вижу, даже если я добавлю другое значение, например "notABoolean", в тело запроса, сам запрос все еще будет успешным. Это только рассматривает это как "ложное". Соответствует ли это принципам REST или имеет больше смысла выдавать ошибку 400 BAD REQUEST, если тело не является истинным / ложным?

1 Ответ

0 голосов
/ 08 ноября 2018

Соответствует ли это принципам REST или имеет больше смысла выдавать ошибку 400 BAD REQUEST, если тело не имеет значения true / false?

«Это зависит».

notABoolean

Это вполне разумный text/plain документ, но он не является действительным application / json документом.

Как отметил Майк, Boolean.valueOf("notABoolean") имеет четко определенное значение; если вы описали свой API таким способом, который явно ограничивает этот случай, то вы получите то, что получите.

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

422 Unprocessable Entity - это то, что вы, похоже, ожидали - это примерно переводится как «да, данные - это то, что вы сказали, но в действительности это не имеет никакого смысла».

Если бы вы описали свой API таким образом, чтобы было разумным только application/json, то этот тест, вероятно, вывел бы либо 415 Неподдерживаемый тип носителя (потому что клиент отправил text/plain), либо 400 неверный запрос (поскольку notABoolean не является допустимым значением JSON).

Конечно, строки являются допустимыми значениями json, поэтому полезная нагрузка ниже может привести к тому же исправлению

"notABoolean"

Это приемлемый тип, и он действителен, но вы вернулись на поезде 422.

Чтобы DropWizard вернул вам 422 «бесплатно», изучите документы по проверке .

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