Saya merancang API berbasis HTTP untuk aplikasi intranet. Saya menyadari ini adalah masalah yang cukup kecil dalam skema besar hal, tetapi: haruskah saya menggunakan tanda hubung, garis bawah, atau unta untuk membatasi kata dalam URI?
Inilah pemikiran awal saya:
camelCase
- kemungkinan masalah jika server tidak peka huruf besar-kecil
- tampaknya memiliki cukup banyak digunakan dalam kunci string kueri ( http://api.example.com ? searchQuery = ...), tetapi tidak di bagian URI lainnya
Tanda penghubung
- lebih estetis daripada alternatif lainnya
- tampaknya banyak digunakan di bagian jalur URI
- tidak pernah melihat kunci string permintaan ditulis dgn tanda penghubung di alam liar
- mungkin lebih baik untuk SEO (ini mungkin mitos)
Menggarisbawahi
- berpotensi lebih mudah untuk menangani bahasa pemrograman
- beberapa API populer (Facebook, Netflix, StackExchange, dll.) menggunakan garis bawah di semua bagian URI.
Saya condong ke bawah untuk semuanya. Fakta bahwa sebagian besar pemain besar menggunakannya sangat menarik (lihat https://stackoverflow.com/a/608458/360570 ).
hyphenated query string in the wild
. Itu biasanya waktu untuk camelCase.Jawaban:
Anda harus menggunakan tanda hubung dalam URL aplikasi web yang dapat dijelajahi. Mengapa? Karena tanda hubung memisahkan kata-kata (sehingga mesin pencari dapat mengindeks kata-kata individual), dan bukan karakter kata . Garis bawah adalah karakter kata, artinya harus dianggap bagian dari kata.
Klik
dua kali ini di Chrome: camelCase Klik
dua kali ini di Chrome: under_score Klik dua kali ini di Chrome: hyphen-ated
Lihat bagaimana Chrome (saya mendengar Google membuat mesin pencari juga) hanya berpikir bahwa salah satunya adalah dua kata?
camelCase
danunderscore
juga mengharuskan pengguna untuk menggunakan shiftkunci, sedangkanhyphenated
tidak.Jadi jika Anda harus menggunakan tanda hubung dalam aplikasi web yang dapat dijelajahi, mengapa Anda repot-repot melakukan sesuatu yang berbeda dalam aplikasi intranet? Satu hal yang perlu diingat.
sumber
?event_id=1
atau?eventId=1
???Praktik terbaik standar untuk REST API adalah memiliki tanda hubung , bukan unta atau garis bawah.
Ini berasal dari "REST API Design Rulebook" Mark Masse dari Oreilly.
Selain itu, perhatikan bahwa Stack Overflow sendiri menggunakan tanda hubung di URL:
.../hyphen-underscore-or-camelcase-as-word-delimiter-in-uris
Seperti halnya WordPress: http://inventwithpython.com/blog/2012/03/18/how-much-math-do-i-need-to-know-to-program-not-that-much-actually
sumber
Sementara saya merekomendasikan tanda hubung, saya juga akan mendalilkan jawaban yang tidak ada dalam daftar Anda:
Tidak ada sama sekali
/quotationrequests/
,/purchaseorders/
dan sebagainya.?q=foo+bar
sumber
Secara umum, itu tidak akan memiliki dampak yang cukup untuk dikhawatirkan, terutama karena ini adalah aplikasi intranet dan bukan aplikasi Internet yang umum digunakan. Khususnya, karena itu intranet , SEO bukan masalah, karena intranet Anda tidak dapat diakses oleh mesin pencari. (dan jika ya, itu bukan aplikasi intranet).
Dan kerangka kerja apa pun yang layak untuknya sudah memiliki cara standar untuk melakukan ini, atau cukup mudah untuk mengubah cara menangani komponen URL multi-kata, jadi saya tidak akan terlalu khawatir tentang hal itu.
Yang mengatakan, inilah cara saya melihat berbagai opsi:
Tanda penghubung
Menggarisbawahi
CamelCase
/
lagian . Jika Anda menemukan bahwa Anda memiliki komponen URL yang panjangnya lebih dari 2 "kata", Anda mungkin harus mencoba menemukan nama yang lebih baik untuk konsep itu.sumber
Jawaban singkat:
kata-kata berhuruf rendah dengan tanda hubung sebagai pemisah
Jawaban panjang:
Apa tujuan dari URL?
Jika menunjuk ke alamat adalah jawabannya, maka URL yang disingkat juga melakukan pekerjaan dengan baik. Jika kami tidak membuatnya mudah dibaca dan dikelola, itu tidak akan membantu pengembang dan pengelola. Mereka mewakili suatu entitas di server, sehingga mereka harus diberi nama secara logis.
Google merekomendasikan penggunaan tanda hubung
Berasal dari latar belakang pemrograman, camelCase adalah pilihan populer untuk menamai kata-kata bersama.
Tetapi RFC 3986 mendefinisikan URL sebagai case-sensitive untuk berbagai bagian URL. Karena URL peka huruf besar-kecil, menjaganya agar tetap rendah (selalu lebih rendah) selalu aman dan dianggap sebagai standar yang baik. Sekarang membawa keluar unta keluar dari jendela.
Sumber: https://metamug.com/article/rest-api-naming-best-practices.html#word-delimiters
sumber
inilah yang terbaik dari kedua dunia.
Saya juga "suka" menggarisbawahi, di samping semua poin positif Anda tentang mereka, ada juga gaya sekolah lama bagi mereka.
Jadi yang saya lakukan adalah menggunakan garis bawah dan cukup tambahkan aturan penulisan ulang kecil ke file .htaccess Apache Anda untuk menulis ulang semua garis bawah menjadi tanda hubung.
https://yoast.com/apache-rewrite-dash-underscore/
sumber