Я разрабатываю API на основе HTTP для приложения в интрасети. Я понимаю, что это довольно небольшая проблема в общей схеме вещей, но: я должен использовать дефисы, подчеркивания или camelCase для разделения слов в URI?
Вот мои первые мысли:
верблюжьего
- возможные проблемы, если сервер нечувствителен к регистру
- кажется, довольно широко используется в ключах строки запроса ( http://api.example.com ? searchQuery = ...), но не в других частях URI
Дефис
- более эстетично, чем другие альтернативы
- кажется, широко используется в части пути URI
- никогда не видел дешифрованный ключ строки запроса в дикой природе
- возможно лучше для SEO (это может быть мифом)
Подчеркивать
- потенциально легче для языков программирования для обработки
- несколько популярных API (Facebook, Netflix, StackExchange и т. д.) используют подчеркивания во всех частях URI.
Я склоняюсь к подчеркиваниям для всего. Тот факт, что большинство крупных игроков используют их, убедителен (см. Https://stackoverflow.com/a/608458/360570 ).
hyphenated query string in the wild
. Как правило, это время для CamelCase.Ответы:
Вы должны использовать дефисы в URL для веб-приложения, которое можно сканировать. Почему? Потому что дефис разделяет слова (чтобы поисковая система могла индексировать отдельные слова) и не является символом слова . Подчеркивание - это символ слова, то есть его следует считать частью слова.
Дважды щелкните это в Chrome: camelCase
Дважды щелкните это в Chrome: under_score
Дважды щелкните это в Chrome: дефис
Видите, как Chrome (я слышал, что Google тоже делает поисковую систему) думает, что одно из них - это два слова?
camelCase
аunderscore
также требует от пользователя использовать shiftключ, тогда какhyphenated
нет.Поэтому, если вам следует использовать дефисы в веб-приложении, которое можно сканировать, зачем вам делать что-то другое в приложении для интрасети? Еще одна вещь, которую нужно запомнить.
источник
?event_id=1
или?eventId=1
???Стандартная лучшая практика для API REST - использовать дефис , а не символ верблюда или подчеркивание.
Это взято из «Правил разработки REST API» Марка Массе от Oreilly.
Кроме того, обратите внимание, что переполнение стека само использует дефисы в URL:
.../hyphen-underscore-or-camelcase-as-word-delimiter-in-uris
Как и WordPress: http://inventwithpython.com/blog/2012/03/18/how-much-math-do-i-need-to-know-to-program-not-that-much- фактически
источник
Хотя я рекомендую дефисы, я также постулирую ответ, которого нет в вашем списке:
Вообще ничего
/quotationrequests/
,/purchaseorders/
и так далее.?q=foo+bar
источник
В целом, это не окажет достаточного влияния, о котором нужно беспокоиться, особенно потому, что это приложение для внутренней сети , а не обычное интернет-приложение. В частности, так как это интранет , SEO не является проблемой, так как ваша интрасеть не должна быть доступна для поисковых систем. (и если это так, это не приложение для внутренней сети).
И любой интегрированный фреймворк уже имеет способ сделать это по умолчанию, или его довольно легко изменить, как он работает с компонентами URL, состоящими из нескольких слов, так что я бы не стал сильно беспокоиться об этом.
Тем не менее, вот как я вижу различные варианты:
Дефис
Подчеркивать
CamelCase
/
любом случае , Если вы обнаружите, что у вас есть компонент URL длиной более 2 «слов», вам, вероятно, следует попытаться найти более подходящее название для этого понятия.источник
Короткий ответ:
слова в нижнем регистре с дефисом в качестве разделителя
Длинный ответ:
Какова цель URL?
Если указание на адрес является ответом, то укороченный URL также хорошо работает. Если мы не сделаем его легким для чтения и сопровождения, это не поможет ни разработчикам, ни сопровождающим. Они представляют сущность на сервере, поэтому они должны быть названы логически.
Google рекомендует использовать дефисы
Исходя из опыта программирования, CamelCase является популярным выбором для обозначения совместных слов.
Но RFC 3986 определяет URL-адреса как чувствительные к регистру для разных частей URL-адреса. Поскольку URL-адреса чувствительны к регистру, сохранение их в низком ключе (в нижнем регистре) всегда безопасно и считается хорошим стандартом. Теперь это берет верблюжий чемодан из окна.
Источник: https://metamug.com/article/rest-api-naming-best-practices.html#word-delimiters
источник
вот лучшее из обоих миров.
Я также «люблю» подчеркивания, помимо всех ваших положительных моментов о них, есть также определенный стиль старой школы для них.
Поэтому я использую подчеркивание и просто добавляю небольшое правило перезаписи в файл .htaccess вашего Apache, чтобы переписать все подчеркивания в дефисы.
https://yoast.com/apache-rewrite-dash-underscore/
источник