Должен ли API REST учитывать регистр или регистр?
На работе у нас возникла проблема с чувствительным к регистру REST API, который игнорирует неправильно записанные параметры без возврата какой-либо ошибки. На мой взгляд это плохо. Тогда возникает общий вопрос:
Должен ли API REST учитывать регистр или регистр?
Каковы преимущества и недостатки каждого подхода?
3 ответа
Как отвечали другие, часть HTTP URL, которая делает API, чувствительна к регистру. Это соответствует соглашению UNIX, где пути URI были сопоставлены с путями файловой системы, а пути файловой системы чувствительны к регистру. Windows, с другой стороны, следует соглашению о том, что пути должны быть нечувствительными к регистру.
Однако в Unix плохая практика иметь два пути, которые различаются только заглавными буквами; Более того, ожидается, что пути будут строчными.
Поэтому: давайте не будем нарушать соглашения.
а также
никогда не должен быть кохексистом. Более того, products
должно быть предпочтительнее Products
, Будь то Products
должен вернуть 404, 301 в products
или просто быть псевдонимом products
это вопрос стиля - это ваш выбор, но будьте последовательны.
API переполнения стека канонически строчные и нечувствительны к регистру. Я думаю, что это облегчает жизнь клиенту, но при этом имеет четкие настройки по умолчанию и не удивляет большинство пользователей.
В конце концов, можете ли вы думать о клиенте, который честно извлекает выгоду из чувствительности к регистру и перекрывающихся имен?
URL-адреса HTTP не чувствительны к регистру для схемы и части узла и регистр для пути, запроса и фрагмента.
http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-25
На работе у нас возникла проблема с чувствительным к регистру REST API, который игнорирует неправильно записанные параметры без возврата какой-либо ошибки. На мой взгляд это плохо.
Тогда не делай этого. Проверьте ваши параметры. Принудительно использовать "пропущенные" параметры. Не отправляйте плохие запросы в первую очередь. Соответствие API, особенно при таком правильном написании параметров, не является большой нагрузкой.
Должен ли API REST учитывать регистр или регистр?
Как уже упоминалось, URL-адреса чувствительны к регистру, поэтому здесь не так много места для переговоров. Увеличение / уменьшение URL / параметров смущает всех, и это делает ваши URL не уникальными. Опять же, не стоит ожидать, что разработчики будут использовать правильные URL-адреса. Эти URL (скорее всего) не набираются случайными людьми, они представляют собой код или веб-страницы. Наконец, это влияет только на URL точки входа. Остальные URL-адреса должны быть прямыми копиями, извлеченными из полезных нагрузок, потому что вы следуете HATEOAS. Эти URL не должны быть перепутаны, а просто попугай.
Просто, если чувствительность к регистру является проблемой, вы делаете это неправильно.
Каковы преимущества и недостатки каждого подхода?
Преимуществами являются последовательность, ясность и правильное применение вашего API. Нет недостатков.