Я работаю над созданием веб-сервиса RESTful.Я ознакомился с принципами использования HTTP для каждого механизма настолько, насколько это возможно, и большую часть времени, например, при извлечении ресурсов, он работает довольно хорошо.
Но когда мне нужно POST aНовая запись в некотором роде, в интересах ясности и надежности, независимо от того, что может делать клиент, я хочу предложить конкретные ошибки проверки, при которых новая запись могла потерпеть неудачу.Кроме того, существуют конкретные ошибки, когда, скажем, данные для создания нового пользователя являются абсолютно действительными, но можно использовать псевдоним или адрес электронной почты.Простое возвращение 409 Conflict
не дает достаточно точных сведений о том, какое из псевдонимов или адресов электронной почты было взято.
Так что обойти это не ракетостроение: задокументировать кучу конкретных кодов ошибок и вернуть объект сошибки:
{ errors: [4, 8, 42] }
Это означает, что в случае неудачных запросов я не возвращаю ресурс или его ключ, как это может ожидать философия REST.Точно так же, когда я возвращаю много ресурсов, мне нужно каким-то образом разместить их в массиве.
Поэтому мой вопрос: буду ли я по-прежнему предоставлять веб-сервис RESTful с хорошим поведением, если я стандартизирую конверт для использования?для каждого запроса, такого, что, например, всегда есть объект типа { errors, isSuccessful, content }
?
Ранее я создавал веб-службы в стиле RPC, которые использовали это, но я не хочу делать что-то, что «почти ОТДЫХАЕТ».Если и будет какой-то смысл быть ОТДЫХАМ, я бы хотел вести себя как можно лучше.
Если ответ «черт возьми, нет», что, я думаю, возможно, я бы хотелузнайте, правильно ли оно решает проблему проверки, и какой может быть хорошая справка для такого рода решения проблем, потому что в большинстве руководств, которые я нашел, подробно описаны только простые случаи.