Kami memiliki database sumber daya, baik itu produk, posting blog atau sesuatu. Kita perlu merancang skema URL untuk mengatasinya, untuk situs web publik.
Berikut adalah dua contoh yang terikat ID basis data:
Berikut ini contoh yang ramah:
(Sedikit melihat kehidupan browsing saya di sana)
Saya suka URL ramah karena Anda memiliki gagasan tentang apa yang ada di akhir URL ketika Anda mengarahkan atau melihatnya di email atau dokumen. Ini lebih baik untuk SEO, atau dulu.
Apa yang terjadi ketika dokumen atau produk diganti namanya? Entah karena itu berubah (Wiki mungkin tidak berubah tetapi sumber daya kami bisa) atau karena kesalahan ketik, kan? Sumber daya kami sangat teknis, kata-kata panjang dan rawan kesalahan.
Kami juga memiliki ID basis data yang merupakan angka. Mari kita lihat ide untuk alamat video menggunakan toko rental yang berpura-pura:
ID jelas dan digunakan dalam pencarian DB. Baik.
Bit pintu geser tidak unik dan hanya dihasilkan dari judul video, dapat diverifikasi di GET, jadi jika pintu geser dimasukkan dan tidak cocok dengan apa yang sebenarnya dalam dokumen 287171, responsnya mencapai 404.
Atau mungkin itu bisa diabaikan, membiarkan manusia untuk menempel apa pun yang mereka suka di sana, jika seseorang pernah peduli. Jadi URL ini juga berfungsi:
Masalah dengan memverifikasi bagian ramah, seperti yang disebutkan, masalah penggantian nama atau koreksi salah ketik. Jika nama berubah, dan di domain kami yang terjadi, kami tidak ingin memecah URL yang ada di luar, jadi sebaiknya kami:
Hanya tidak memverifikasi bagian yang ramah.
Verifikasi, tetapi tambahkan 'riwayat' bagian yang ramah ke catatan basis data sehingga ID ramah sebelumnya masih berfungsi!
Pikiran dan ide Anda dipersilakan.
Luke
http://programmers.stackexchange.com/questions/255684/providing-friendly-urls-for-a-website-vs-realities-of-database-ids
(menggunakan versi yang tidak diverifikasi sehubungan dengan perubahan judul, juga tautan "bagikan" yang lebih pendek hanyalah id:http://programmers.stackexchange.com/q/255684/25768
(dan id pengguna untuk pelacakan lencana)Jawaban:
Menyimpan ID di URL adalah metode bukti paling masa depan dan saat Anda menunjukkan, URL masih bisa terlihat relatif baik.
Opsi lain yang digunakan oleh banyak proyek adalah untuk menjaga sejarah siput yang sebelumnya digunakan. Ketika judul berubah, Anda memperbarui siput dan jika seseorang mencoba mencari siput usang, cari di daftar siput tua. Dengan cara itu siput tua dapat digunakan kembali untuk konten baru (atau tidak tergantung pada implementasi Anda).
Wordpress melakukannya dan begitu pula permata friendly_id yang mungkin merupakan permata yang paling banyak digunakan untuk mengelola id ramah untuk Rails.
Selain itu, walaupun saya suka URL yang terlihat bagus, saya pikir penting untuk diingat bahwa ini kemungkinan besar merupakan fitur yang digunakan oleh lebih banyak pengguna yang mengerti teknologi. Beberapa browser bahkan mulai menyembunyikan URL (atau bagian dari itu).
sumber
Saya telah menggunakan dua skenario berbeda di masa lalu.
/id/some-slug
mana yangid
digunakan untuk pencarian , siput tidak. Dengan demikian siput bisa berupa apa saja . Tetapi, ketika siput tidak cocok dengan siput yang sebenarnya, pengguna diarahkan ke versi saat ini./permalink
untuk kasus-kasus di mana kami tidak menginginkan id di url atau di mana url tidak boleh berubah, meskipun ada id yang tersedia (lihat [1] dan [2] ). Tentu saja, dalam hal ini yangpermalink
digunakan untuk lookup . Kedua siput saat ini dan permalink (siput pertama) disimpan dalam database.Dalam kedua cara ini Anda tidak perlu menyimpan sejarah siput dalam database Anda, yang akan menjadi masalah segera.
ps: Dalam kasus kedua Anda akan memerlukan beberapa rute yang sangat spesifik untuk menjaga kredit sosial:
Lihat [1] dan [2] lagi.
sumber
Respons HTTP 301 (Pindah) dirancang untuk tujuan ini. Jika ada klien yang masuk ke URI lama, Anda cukup mengirimi mereka URI baru dan mereka dapat mengarahkannya kembali.
Jika saya mengikuti dengan benar ini adalah pekerjaan duplikat, Anda memiliki pengenal nama untuk sumber daya dan id di URI yang sama. Itu tidak melayani tujuan apa pun.
Jika Anda khawatir tentang beberapa film dengan nama yang sama, Anda dapat menambahkan informasi tambahan tentang film ke dalam URL
atau
Setelah mengatakan bahwa tidak ada yang salah dengan menggunakan ID jika itu masuk akal untuk model data Anda, terutama jika satu-satunya hal yang Anda kelompokkan adalah bahwa itu adalah video.
Klien, baik komputer atau pengguna manusia seharusnya tidak terlalu bergantung pada struktur URI di tempat pertama, mereka harus melihat konten yang telah Anda kembalikan untuk mencari tahu sumber daya mana yang harus ditemukan.
Tidak ada yang salah dengan memiliki sistem URI yang masuk akal yang memudahkan seseorang untuk hanya menebak lokasi sumber daya atau menavigasi ke atas dan ke bawah struktur berdasarkan properti bersama (yaitu semua film pada tahun 2004), tetapi sistem Anda tidak boleh mengandalkan pada itu dan tidak ada klien yang akan rusak jika Anda mengubah URI Anda
Atau dengan kata lain, Anda harus dapat berubah dari malam
untuk
dan tidak boleh ada klien yang putus karena klien harus melihat konten, bukan URL.
sumber
BBC menggunakan siput yang:
mis. http://www.bbc.co.uk/programmes/b006mk7h
Setiap program publik memiliki ID dan siput. ID kemudian dapat berupa bilangan bulat yang bertambah secara otomatis seperti biasa, dan celah tidak terbuka.
sumber
Dari sudut pandang tenang, URI harus mengikuti struktur hierarkis yang dapat diprediksi dan mungkin untuk meningkatkan kegunaan.
Ini akan membuat mereka lebih mudah digunakan oleh konsumen. Jika data Anda memiliki hubungan, maka semacam hierarki akan diperlukan.
Sepertinya skemanya adalah:
\video\[name]\[id]
Jika nama tidak digunakan untuk klasifikasi lebih lanjut, nama itu dapat dibatalkan
\video\[id].
Namun, jika Anda ingin mengklasifikasikan video maka mungkin namanya berguna.
Contoh:
Ini benar-benar keputusan desain tentang bagaimana akses dimodelkan.
sumber