Sederhananya, Anda melakukan ini sepenuhnya mundur.
Anda tidak boleh mendekati ini dari URL apa yang harus Anda gunakan. URL secara efektif akan datang "gratis" setelah Anda memutuskan sumber daya apa yang diperlukan untuk sistem Anda DAN bagaimana Anda akan mewakili sumber daya tersebut, dan interaksi antara sumber daya dan keadaan aplikasi.
Mengutip Roy Fielding
REST API harus menghabiskan hampir semua upaya deskriptifnya dalam mendefinisikan jenis media yang digunakan untuk mewakili sumber daya dan status aplikasi mengemudi, atau dalam mendefinisikan nama hubungan yang diperluas dan / atau mark-up yang memungkinkan hypertext untuk jenis media standar yang ada. Upaya apa pun yang digunakan untuk menjelaskan metode apa yang digunakan pada URI yang diminati harus sepenuhnya ditentukan dalam ruang lingkup aturan pemrosesan untuk jenis media (dan, dalam banyak kasus, sudah ditentukan oleh jenis media yang ada). [Kegagalan di sini menyiratkan bahwa informasi out-of-band mendorong interaksi bukannya hiperteks.]
Orang-orang selalu mulai dengan URI dan berpikir ini adalah solusinya, dan kemudian mereka cenderung kehilangan konsep kunci dalam arsitektur REST, terutama, seperti dikutip di atas, "Kegagalan di sini menyiratkan bahwa informasi out-of-band mendorong interaksi daripada hiperteks. "
Sejujurnya, banyak yang melihat sekelompok URI dan beberapa GET dan PUT dan POST dan berpikir REST itu mudah. SISA tidak mudah. RPC melalui HTTP mudah, memindahkan gumpalan data bolak-balik yang diproksi melalui payload HTTP mudah. REST, bagaimanapun, melampaui itu. REST adalah protokol agnostik. HTTP sangat populer dan tepat untuk sistem REST.
REST hidup dalam jenis media, definisi mereka, dan bagaimana aplikasi mendorong tindakan yang tersedia untuk sumber daya tersebut melalui hypertext (tautan, secara efektif).
Ada pandangan berbeda tentang tipe media dalam sistem REST. Beberapa mendukung muatan aplikasi tertentu, sementara yang lain suka mengangkat jenis media yang ada ke peran yang sesuai untuk aplikasi. Misalnya, di satu sisi Anda memiliki skema XML khusus yang dirancang sesuai untuk aplikasi Anda dibandingkan menggunakan sesuatu seperti XHTML sebagai representasi Anda, mungkin melalui Microformats dan mekanisme lainnya.
Kedua pendekatan memiliki tempat masing-masing, saya pikir, XHTML bekerja sangat baik dalam skenario yang tumpang tindih dengan web yang digerakkan manusia dan mesin, sedangkan yang sebelumnya, tipe data yang lebih spesifik, saya merasa lebih mudah memfasilitasi interaksi mesin ke mesin. Saya menemukan peningkatan format komoditas dapat membuat negosiasi konten berpotensi sulit. "application / xml + yourresource" jauh lebih spesifik sebagai jenis media daripada "application / xhtml + xml", karena yang terakhir dapat berlaku untuk banyak muatan yang mungkin atau mungkin bukan sesuatu yang benar-benar diminati oleh klien mesin, juga tidak bisa tentukan tanpa introspeksi.
Namun, XHTML bekerja dengan sangat baik (jelas) di web manusia di mana browser web dan rendering sangat penting.
Aplikasi Anda akan memandu Anda dalam keputusan semacam itu.
Bagian dari proses merancang sistem REST adalah menemukan sumber daya kelas satu di sistem Anda, bersama dengan turunannya, sumber daya pendukung yang diperlukan untuk mendukung operasi pada sumber daya primer. Setelah sumber daya ditemukan, maka representasi sumber daya tersebut, serta diagram negara menunjukkan aliran sumber daya melalui hypertext dalam representasi karena tantangan berikutnya.
Ingatlah bahwa setiap representasi sumber daya, dalam sistem hypertext, menggabungkan representasi sumber daya aktual bersama dengan transisi negara yang tersedia untuk sumber daya. Anggap setiap sumber daya simpul dalam grafik, dengan tautannya adalah garis yang meninggalkan simpul itu ke negara lain. Tautan ini memberi tahu klien tidak hanya apa yang dapat dilakukan, tetapi apa yang harus dilakukan oleh mereka (karena tautan yang baik menggabungkan URI dan jenis media yang diperlukan).
Misalnya, Anda mungkin memiliki:
<link href="http://example.com/users" rel="users" type="application/xml+usercollection"/>
<link href="http://example.com/users?search" rel="search" type="application/xml+usersearchcriteria"/>
Dokumentasi Anda akan berbicara tentang bidang rel bernama "pengguna", dan jenis media "aplikasi / xml + pengguna Anda".
Tautan ini mungkin tampak berlebihan, mereka semua berbicara dengan URI yang sama, cukup banyak. Tapi ternyata tidak.
Ini karena untuk relasi "pengguna", tautan itu berbicara tentang koleksi pengguna, dan Anda dapat menggunakan antarmuka seragam untuk bekerja dengan koleksi (GET untuk mengambil semuanya, HAPUS untuk menghapus semuanya, dll.)
Jika Anda POST ke URL ini, Anda harus melewati dokumen "application / xml + usercollection", yang mungkin hanya akan berisi satu instance pengguna dalam dokumen sehingga Anda dapat menambahkan pengguna, atau tidak, mungkin, untuk menambahkan beberapa di sekali. Mungkin dokumentasi Anda akan menyarankan agar Anda cukup mengoper satu jenis pengguna saja, bukan koleksi.
Anda dapat melihat apa yang dibutuhkan aplikasi untuk melakukan pencarian, seperti yang ditentukan oleh tautan "pencarian" dan itu adalah tipe media. Dokumentasi untuk jenis media pencarian akan memberi tahu Anda bagaimana ini berperilaku, dan apa yang diharapkan sebagai hasil.
Namun, yang dapat dibawa pulang di sini adalah URI sendiri pada dasarnya tidak penting. Aplikasi ini mengendalikan URI, bukan klien. Di luar beberapa 'titik masuk', klien Anda harus mengandalkan URI yang disediakan oleh aplikasi untuk pekerjaannya.
Klien perlu tahu cara memanipulasi dan menafsirkan jenis media, tetapi tidak terlalu peduli ke mana ia pergi.
Kedua tautan ini secara semantik identik di mata klien:
<link href="http://example.com/users?search" rel="search" type="application/xml+usersearchcriteria"/>
<link href="http://example.com/AW163FH87SGV" rel="search" type="application/xml+usersearchcriteria"/>
Jadi, fokuslah pada sumber daya Anda. Berfokuslah pada transisi keadaan mereka dalam aplikasi dan bagaimana hal itu dicapai dengan terbaik.