Дефис, подчеркивание или camelCase в качестве разделителя слов в URIs?
Я разрабатываю API на основе HTTP для приложения интрасети. Я понимаю, что это довольно небольшая проблема в большой схеме вещей, но:должен ли я использовать дефисы, подчеркивания или camelCase для разграничения слов в URIs?
вот мои первоначальные мысли:
camelCase
- возможные проблемы, если сервер не учитывает регистр
- похоже, довольно широко используется в строковых ключах запроса (http://api.example.com?searchQuery=...), но не в других частях URI
тире
- более эстетично, чем другие альтернативы
- кажется, широко используется в части пути URI
- никогда не видел дефис строки запроса ключа в wild
- возможно лучше для SEO (это может быть миф)
подчеркивание
- потенциально проще для языков программирования обрабатывать
- несколько популярных API (Facebook, Netflix, StackExchange и т. д.) используют подчеркивания во всех частях URI.
Я склоняюсь к подчеркиванию для всего. Тот факт, что большинство крупных игроков используют их, является убедительным (см. https://stackoverflow.com/a/608458/360570).
5 ответов
вы должны использовать дефисы в URL-адресе веб-приложения для обхода. Почему? Потому что дефис разделяет слова (так что поисковая система может индексировать отдельные слова), а не буква. Подчеркивание-это символ слова, то есть его следует считать частью слова.
дважды щелкните это в Chrome: camelCase
Дважды щелкните это в Chrome: under_score
Дважды щелкните это в Chrome: дефис
посмотрите, как Chrome (я слышу Google делает поисковую систему тоже) только думает, что одно из этих двух слов?
camelCase
и underscore
также требуется, чтобы пользователь использовал shift ключ, а hyphenated
нет.
Итак, если вы должны использовать дефисы в сканируемом веб-приложении, зачем вам беспокоиться о чем-то другом в интрасети? Одним воспоминанием меньше.
стандартная лучшая практика для REST APIs - иметь тире, не camelcase или подчеркивания.
это происходит из "REST API Design Rulebook" Марка массе от 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-actually
пока Я рекомендую дефисы, Я также постулирую ответ, которого нет в вашем списке:
Ничего
- API моей компании имеет URIs like
/quotationrequests/
,/purchaseorders/
и так далее. - несмотря на то, что вы сказали, что это приложение интрасети, вы указали SEO в качестве преимущества. Google соответствует шаблону / foobar / в URL-адресе для запроса
?q=foo+bar
- я действительно надеюсь, вы не рассматриваете возможность выполнения PHP вызовите любую произвольную строку, которую пользователь передает в адресную строку, как предлагает @ServAce85!
В общем, это не будет иметь достаточно влияния, чтобы беспокоиться, тем более, что это интрасети приложение, а не интернет-приложение общего пользования. В частности, поскольку это интрасети, SEO не является проблемой, так как ваша интрасеть не должна быть доступна для поисковых систем. (и если это так, это не приложение интрасети).
и любой фреймворк стоит соли либо уже имеет способ по умолчанию сделать это, либо довольно легко изменить, как он работает с компоненты URL с несколькими словами, поэтому я бы не беспокоился об этом слишком много.
тем не менее, вот как я вижу различные варианты:
тире
- самая большая опасность для дефисов заключается в том, что один и тот же символ (обычно) также используется для вычитания и числового отрицания (т. е. минус или отрицательный).
- тире чувствовать неудобно в компонентах URL. Они, кажется, имеют смысл только в конце URL для разделения слов в заголовке статьи. Или, например, заголовок вопроса переполнения стека, который добавляется в конец URL-адреса для целей SEO и ясности пользователя.
подчеркивание
- опять же, они чувствуют себя неправильно в компонентах URL. Они разбивают поток (и красоту/простоту) URL-адреса, поскольку они по существу добавляют большое, тяжелое кажущееся пространство в середине чистого, текущего URL-адреса.
- они имеют тенденцию смешиваться с подчеркиванием. Если вы ожидаете, что ваши пользователи скопируют ваши URL-адреса в MS Word или другие подобные программы для редактирования текста или в любом другом месте, которое может подобрать URL-адрес и стиль его с подчеркиванием (например, links традиционно are), то вы можете избежать подчеркивания в качестве разделителей слов. Особенно при печати подчеркнутый URL-адрес с подчеркиваниями имеет тенденцию выглядеть так, как будто он имеет помещения в нем вместо подчеркивает.
CamelCase
- на сегодняшний день мой любимый, так как это делает URL-адреса, кажется, течет лучше и не имеет каких-либо недостатков, что предыдущие два варианта.
- может быть немного труднее читать для людей, которые с трудом различают верхний регистр от нижнего регистра, но это не должно быть большой проблемой в URL, потому что большинство "слов" должны быть компонентами URL и разделены
/
в любом случае. Если вы обнаружите, что у вас есть компонент URL-адреса длиной более 2 "слов", вам, вероятно, следует попытаться найти лучшее имя для этой концепции. - это тут есть возможная проблема с чувствительностью к регистру, но большинство платформ могут быть скорректированы с учетом регистра или без учета регистра. Каких только действительно проблема для 2 случаев: a.) люди вводят URL-адрес и b.) Программисты (поскольку мы не люди) вводят URL-адрес. Опечатки всегда проблема, независимо от чувствительности к регистру, так что это не отличается, что все один случай.