URI'lerde sözcük sınırlayıcı olarak tire, alt çizgi veya camelCase?


477

Bir intranet uygulaması için HTTP tabanlı bir API tasarlıyorum. Şeylerin genel şemasında oldukça küçük bir endişe olduğunu fark ettim, ama: URI'lerde kelimeleri sınırlamak için tire, alt çizgi veya camelCase kullanmalı mıyım?


İşte ilk düşüncelerim:

camelCase

  • sunucu büyük / küçük harfe duyarlı değilse olası sorunlar
  • sorgu dizesi anahtarlarında ( http://api.example.com ? searchQuery = ...) oldukça yaygın bir kullanıma sahip gibi görünüyor , ancak diğer URI bölümlerinde değil

Tire

  • diğer alternatiflerden daha estetik olarak daha hoş
  • URI'nin yol bölümünde yaygın olarak kullanılıyor gibi görünüyor
  • vahşi hiç tirelenmiş sorgu dizesi anahtarı görmedim
  • SEO için muhtemelen daha iyi (bu bir efsane olabilir)

Vurgulamak

  • programlama dillerinin işlenmesi potansiyel olarak daha kolay
  • birkaç popüler API (Facebook, Netflix, StackExchange, vb.) URI'nin tüm bölümlerinde alt çizgi kullanmaktadır.

Her şey için alt çizgilere yaslanıyorum. Büyük oyuncuların çoğunun onları kullanması zorlayıcıdır (bkz. Https://stackoverflow.com/a/608458/360570 ).


Okuduğum her şey itibaren, gereken kullanmak tire , ancak alt çizgi gibi görünüyor yönetmek daha kolay.
ServAce85

1
Kısa çizgilerin bir zamanlar SEO amaçları için daha iyi olduğuna inanıyorum . Bu şimdi doğru olmayabilir, ancak birçok insan bunu en iyi uygulama olarak daha yaygın olarak kabul ettiğini kabul etti. Öte yandan alt çizgi programlarının arka uç programlarında ele alınması daha kolay olabilir. PHP kullanıyorum, bu nedenle işlev adı için alt çizgi kullanmak tire işaretinden çok daha kolay. camelCase uygulaması en kolay yöntem olabilir, ancak okumak genellikle zordur. Son olarak, hiç görmediğinizi söylediğinizde haklı olduğunuzu düşünüyorum hyphenated query string in the wild. Bu genellikle camelCase için bir zamandır.
ServAce85

Bu soruya göre alt çizgi geçerli bir seçenek değil: stackoverflow.com/questions/3641722/…
wytten


Popüler API'lardan bahsediyorsunuz, bir tane eklemek istiyorum: Google. Gördüğüm kadarıyla, Google kelimeler arasında hiçbir şey kullanmıyor (örneğin Google Haritalar Mesafe Matrisi API'sını kontrol edin).
nbeuchat

Yanıtlar:


473

Taranabilir bir web uygulaması URL'sinde tire işareti kullanmalısınız. Neden? Kısa çizgi kelimeleri ayırdığı için (böylece bir arama motoru tek tek kelimeleri dizine ekleyebilir) ve kelime karakteri . Alt çizgi bir kelime karakteridir, yani bir kelimenin parçası olarak düşünülmelidir.

Chrome'da bunu çift tıklayın: camelCase
bunu
çift ​​tıklayın: tire işareti

Chrome'un (Google'ın da bir arama motoru oluşturduğunu duydum) bunlardan yalnızca birinin iki kelime olduğunu düşündüğünü görüyor musunuz?

camelCaseve underscoreayrıca kullanıcınınshift anahtarıhyphenated .

Öyleyse, taranabilir bir web uygulamasında tireler kullanmanız gerekiyorsa, neden bir intranet uygulamasında farklı bir şey yapmaktan rahatsız oluyorsunuz? Hatırlanması gereken bir şey daha az.


20
Windows 7'deki Firefox 24'üm 'tire' kelimesinin iki kelime olduğunu düşünüyor.
Marcel Stör

9
ve 'under_score' için de aynı şekilde davranır.
Marcel Stör

18
queryString için herhangi bir kural, örneğin ?event_id=1veya ?eventId=1???
user2727195

8
@ user2727195 URL'ler büyük / küçük harfe duyarlı olsa da, en iyi uygulama, yanlış yazma olasılığını ortadan kaldırdığı için mümkün olan yerlerde küçük harf kullanmaktır.
Nicholas Shanks

7
Etkileşimli yanıt :)
wild_nothing

210

REST API'leri için standart en iyi uygulama , deve veya alt çizgi değil kısa çizgi kullanmaktır.

Bu Mark Masse'nin Oreilly'den “REST API Design Rulebook” tan geliyor.

Ayrıca, Yığın Taşmasının kendisinin URL'de kısa çizgiler kullandığını unutmayın: .../hyphen-underscore-or-camelcase-as-word-delimiter-in-uris

WordPress gibi: http://inventwithpython.com/blog/2012/03/18/how-much-math-do-i-ne-to-know-to-program-not-that-much-actually


3
REST API Tasarım Kural Kitabı'ndaki sorgu dizesi yönergeleri bölümüne bakın, kuralların kural bölümüne göre değiştiğini fark edeceksiniz. Sorgu dizelerinde kasa hakkında açık bir kural yoktur, ancak sorgu dizeleri bölümündeki tüm örneklerin tüm anahtarların deve durumunda olduğunu göreceksiniz.
Michael Lang

1
Sadece FYI - "REST API Design Rulebook" Ekim 2011'de yayınlandı. Son 8 yılda işler değişti.
ChrisN

25

Kısa çizgiler önerirken, listenizde olmayan bir yanıtı da önereceğim:

Hiçbir şey

  • Şirketimin API gibi URI'lerin sahiptir /quotationrequests/, /purchaseorders/vb.
  • Bir intranet uygulaması olduğunu söylemenize rağmen, SEO'yu bir fayda olarak listelediniz. Google, / foobar / şablonuyla şu URL'yi eşleştirir:?q=foo+bar
  • Ben gerçekten @ ServAce85 önerdiği gibi, kullanıcı adres çubuğuna geçer herhangi bir rastgele dize bir PHP çağrısı yürütme düşünmüyorum umuyoruz!

Açık bir seçimi işaret etmek için +1. Ayrıca / quotationrequests / from / quotation / requests / öğelerini de belirsizleştirir.
Josh Petitt

34
Bu yanıtla ilgili kötü olan şey, bir SEO perspektifinden bakıldığında, bir makinenin bir kelimenin nerede bittiğini ve diğerinin nerede başladığını anlamasının bir yolu olmadığıdır, bu nedenle bu bilgiler kaybolur. İnsan okuyucular için de zor. Bazı kelime düzeyinde ayırıcılara sahip olmak hiç yoktan iyidir.
Al Sweigart

3
@AlSweigart SEO, bir giriş duvarının arkasında bir intranet uygulaması olduğu için ilgili değildir.
Nicholas Shanks

2
@ Niel-mcguigan ile bu intranet uygulaması olmasına rağmen, her yerde tireler kullanırsanız hatırlanması gereken daha az şey olduğunu kabul ediyorum.
Drew Goodwin

2
@DrewGoodwin Fuarı yeterince. Ben "önermek" değil "önermek" dediğim not olmasına rağmen :-) Ve etki alanları genellikle içlerinde tire yoktur, bu yüzden onları yollarda kullanmak zaten hatırlanması gereken bir şey daha var.
Nicholas Shanks

18

Genel olarak, özellikle intranet uygulaması olduğu ve genel kullanımlı bir İnternet uygulaması olmadığı için endişelenecek bir etkisi olmayacaktır. Özellikle, intranet olduğu için , SEO endişe verici değildir, çünkü intranetiniz arama motorları tarafından erişilebilir olmamalıdır. (ve eğer öyleyse, bir intranet uygulaması değildir).

Ve tuz değerinde herhangi bir çerçeve ya zaten bunu yapmak için varsayılan bir yolu vardır, ya da çok kelimeli URL bileşenleri ile anlaşma şeklini değiştirmek oldukça kolaydır, bu yüzden çok fazla endişe olmaz.

Bununla birlikte, çeşitli seçenekleri şu şekilde görüyorum:

Tire

  • Tireler için en büyük tehlike, aynı karakterin (tipik olarak) çıkarma ve sayısal olumsuzlama (yani eksi veya negatif ) .
  • Kısa çizgiler hissediyorum URL bileşenlerindeki garip. Bir URL'nin sonunda yalnızca bir makalenin başlığındaki kelimeleri ayırmak için anlamlı görünüyorlar. Örneğin, SEO ve kullanıcı açıklığı amacıyla bir URL'nin sonuna eklenen Yığın Taşması sorusunun başlığı.

Vurgulamak

  • Yine, URL bileşenlerinde yanlış hissediyorlar. Bir URL'nin akışını (ve güzelliğini / sadeliğini) bozarlar, çünkü temiz, akan bir URL'nin ortasına büyük, ağır görünen bir alan eklerler.
  • Alt çizgilerle uyum eğilimindedirler. Kullanıcılarınızın URL'lerinizi MS Word veya diğer benzer metin düzenleme programlarına veya bir URL'yi alıp altını çizebilecek ( geleneksel olarak bağlantılar gibi ) başka bir yere kopyalayıp yapışmasını bekliyorsanız, sözcük ayırıcılar olarak alt çizgi kullanmaktan kaçının. Özellikle yazdırıldığında, alt çizgileri olan altı çizili bir URL, boşlukları varmış gibi görünür yerine .

CamelCase

  • Şimdiye kadar benim favorim, çünkü URL'ler daha iyi akıyor gibi görünüyor ve önceki iki seçeneğin yaptığı hatalardan hiçbirine sahip değil.
  • Büyük harfleri küçük harflerden ayırmakta zorlanan insanlar için okumak biraz daha zor olabilir , ancak çoğu "kelime" URL bileşenleri olmalı ve bir URL ile ayrılmış olmalıdır./ zaten . 2 "kelimeden" daha uzun bir URL bileşenine sahip olduğunuzu fark ederseniz, muhtemelen bu kavram için daha iyi bir ad bulmaya çalışmalısınız.
  • O does küçük harf duyarlılığı ile olası bir sorun var, ama çoğu platformlar ya harf duyarlı veya büyük küçük harf duyarsız olması ayarlanabilir. Herhangi teklif sadece gerçekten 2 durumlar için bir sorun: a) URL yazarak (insan olmadığından) URL yazarak insanlarda ve b) Programcılar Typos vardır... Hep bu yüzden, küçük harf duyarlılığı bakılmaksızın, bir sorun hepsi bir davadan farklı değil.

13
Katılmıyorum. SO'ya bakın, tüm wordpress sitelerine bakın, çoğu haber sitesine bakın, hepsi tire kullanır. Ayrıca deve durumda davaları karıştırır, Bence web tüm küçük harf olmalıdır.
Fabien Warniez

4
Bence, web aslında büyük / küçük harfe duyarsız olmalıdır. Kural ile ilgili olarak, RoR (raylarda yakut) rotaları yaklaşımını takip ederseniz, alt çizgileri kullanırsınız. Genellikle bunu, raylar tarafından oluşturulan güzergahlar ve adlandırılmış güzergahlar boyunca tutarlı tutmak için yaparım. Yine de, benim için alt çizgilerden daha iyi okunan çizgi olduğunu düşünüyorum.
rpbaltazar

1
Belki de intranetlerinde dahili bir arama motoru var mı?
Juha Untinen

3
Katılmıyorum. Tirelere karşı her iki argümanınız da kusurludur. Olumsuzlama veya çıkarma konusunda tehlike yoktur, çünkü burada bir demetin isim bölümünden bahsediyoruz, asla bir demetin isim bölümünü matematik veya olumsuzlama için işlememeli veya değerlendirmemelisiniz. Ayrıca, iyi kurulmuş sitelerin bir eksikliği tarafından kullanılan uzun zamandır devam eden en iyi uygulama olduğu için URI'lerde tire kullanımı konusunda garip bir şey yoktur. Ayrıca Shift tuşuna basmayı gerektirmezler ve neredeyse herkes tarafından kelime sınırları olarak kabul edilirler.
tpartee

2
Hatırlayabildiğim kadarıyla, tireler URL'lerde yoğun olarak kullanılan norm olmuştur ve kesinlikle bugünün standartlarında en iyi uygulama olarak kabul edilmektedir. Onları kullanmamak çünkü garip hissetmek bana garip geliyor.
pistol-pete

2

Kısa cevap:

ayırıcı olarak kısa çizgi içeren alt kasalı kelimeler

Uzun cevap:

URL'nin amacı nedir?

Yanıt bir adrese işaret ediyorsa, kısaltılmış bir URL de iyi bir iş çıkarıyor. Okumayı ve bakımını kolaylaştırmazsak, geliştiricilere ve bakımcılara aynı şekilde yardımcı olmaz. Sunucudaki bir varlığı temsil ederler, bu nedenle mantıksal olarak adlandırılmalıdırlar.

Google kısa çizgi kullanmanızı önerir

URL'lerinizde noktalama işaretleri kullanmayı düşünün. URL http://www.example.com/green-dress.html çok daha kullanışlıdır bize olan http://www.example.com/greendress.html . URL'lerinizde alt çizgi (_) yerine kısa çizgiler (-) kullanmanızı öneririz.

Programlama arka planından gelen camelCase, ortak sözcükleri adlandırmak için popüler bir seçimdir.

Ancak RFC 3986 , URL'leri, URL'nin farklı bölümleri için büyük / küçük harfe duyarlı olarak tanımlar. URL'ler büyük / küçük harfe duyarlı olduğundan, düşük anahtarlı (alt kasalı) her zaman güvenlidir ve iyi bir standart olarak kabul edilir. Şimdi bu bir deve kasasını pencereden çıkarıyor.

Kaynak: https://metamug.com/article/rest-api-naming-best-practices.html#word-delimiters


-1

işte her iki dünyanın en iyisi.

Ben de alt çizgileri "seviyorum", onlar hakkındaki tüm olumlu noktaların yanı sıra, onlar için belirli bir eski okul tarzı da var.

Yani yaptığım şey alt çizgileri kullanmak ve tüm alt çizgileri tirelere yeniden yazmak için Apache'nizin .htaccess dosyasına küçük bir yeniden yazma kuralı eklemektir.

https://yoast.com/apache-rewrite-dash-underscore/

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.