Gunakan URL untuk menentukan objek Anda, bukan tindakan Anda:
Perhatikan apa yang pertama kali Anda sebutkan tidak tenang:
/questions/show/<whatever>
Sebagai gantinya, Anda harus menggunakan URL Anda untuk menentukan objek Anda:
/questions/<question>
Kemudian Anda melakukan salah satu operasi di bawah ini pada sumber daya itu.
DAPATKAN:
Digunakan untuk mendapatkan sumber daya, membuat kueri daftar sumber daya, dan juga untuk menanyakan informasi hanya-baca pada sumber daya.
Untuk mendapatkan sumber pertanyaan:
GET /questions/<question> HTTP/1.1
Host: whateverblahblah.com
Untuk mendaftar semua sumber pertanyaan:
GET /questions HTTP/1.1
Host: whateverblahblah.com
POS:
Digunakan untuk membuat sumber daya.
Perhatikan bahwa berikut ini adalah kesalahan:
POST /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
Jika URL belum dibuat, Anda tidak boleh menggunakan POST untuk membuatnya saat menentukan nama. Ini akan menghasilkan kesalahan sumber daya tidak ditemukan karena belum ada. Anda harus MENEMPATKAN sumber daya di server terlebih dahulu. Anda dapat berargumen bahwa dengan membuat pertanyaan baru, Anda juga memperbarui sumber / pertanyaan karena sekarang akan menghasilkan satu pertanyaan lagi dalam daftar pertanyaannya.
Anda harus melakukan sesuatu seperti ini untuk membuat sumber daya menggunakan POST:
POST /questions HTTP/1.1
Host: whateverblahblah.com
Perhatikan bahwa dalam kasus ini nama sumber daya tidak ditentukan, jalur URL objek baru akan dikembalikan kepada Anda.
MENGHAPUS:
Digunakan untuk menghapus sumber daya.
DELETE /questions/<question> HTTP/1.1
Host: whateverblahblah.com
TARUH:
Digunakan untuk membuat sumber daya, atau menimpanya, saat Anda menentukan URL sumber daya.
Untuk sumber daya baru:
PUT /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
Untuk menimpa sumber daya yang ada:
PUT /questions/<existing_question> HTTP/1.1
Host: whateverblahblah.com
... Ya, mereka sama. PUT sering kali dideskripsikan sebagai metode 'edit', karena dengan mengganti seluruh sumber daya dengan versi yang sedikit diubah, Anda telah mengedit apa yang akan didapatkan klien saat mereka melakukannya nanti.
Menggunakan REST dalam bentuk HTML:
Spesifikasi HTML5 mendefinisikan GET dan POST untuk elemen formulir .
Atribut konten metode adalah atribut yang disebutkan dengan kata kunci dan status berikut:
- Kata kunci GET, pemetaan ke status GET, menunjukkan metode HTTP GET.
- Kata kunci POST, pemetaan ke status POST, menunjukkan metode HTTP POST.
Secara teknis, spesifikasi HTTP tidak membatasi Anda hanya pada metode tersebut. Secara teknis Anda bebas menambahkan metode apa pun yang Anda inginkan, namun dalam praktiknya, ini bukan ide yang bagus. Idenya adalah bahwa semua orang tahu bahwa Anda menggunakan GET untuk membaca data, jadi akan membingungkan jika Anda memutuskan untuk menggunakan BACA. Yang mengatakan ...
PATCH:
Ini adalah metode yang didefinisikan dalam RFC formal. Ini dirancang untuk digunakan ketika Anda ingin mengirim hanya sebagian modifikasi ke sumber daya, itu akan digunakan seperti PUT:
PATCH /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
Perbedaannya adalah PUT harus mengirim seluruh sumber daya, tidak peduli seberapa besar itu dibandingkan dengan apa yang sebenarnya berubah, sementara PATCH Anda hanya dapat mengirim perubahan.
Dengan asumsi
/questions/10
pertanyaan yang valid maka metode yang digunakan untuk berinteraksi dengannya.POSTING untuk menambahkannya
PUT untuk membuat atau menggantinya
DAPATKAN untuk melihat / menanyakannya
dan HAPUS dengan baik .. hapus itu.
Url tidak berubah.
sumber
Saya akan mengambil risiko dan menebak bahwa yang Anda maksud adalah pengontrol standar untuk MVC saat Anda mengucapkan url "RESTful", karena contoh Anda dapat dianggap non- "RESTful" (lihat ini artikel ).
Karena Rails benar-benar mempopulerkan gaya URL yang tampaknya Anda minati, saya menawarkan di bawah ini tindakan pengontrol default yang dihasilkan oleh ScaffoldingGenerator di Ruby on Rails. Ini seharusnya sudah familiar bagi siapa saja yang menggunakan aplikasi Rails.
Biasanya Anda akan membuat ini sebagai:
sumber
Berikut adalah pemetaan URL Anda saat ini menggunakan prinsip REST:
Jika Anda mengidentifikasi pertanyaan sebagai sumber daya, maka pertanyaan tersebut harus memiliki URL yang unik. Menggunakan GET untuk menampilkannya (mengambilnya) adalah praktik umum. Menjadi:
Sekarang Anda ingin pengguna memiliki tampilan lain dari sumber daya yang sama yang memungkinkannya untuk mengedit sumber daya (mungkin dengan kontrol formulir).
Dua opsi di sini, aplikasi Anda adalah aplikasi (bukan situs web), maka Anda mungkin lebih baik menggunakan JavaScript untuk mengubah sumber daya menjadi sumber daya yang dapat diedit di sisi klien.
Jika ini adalah situs web, Anda dapat menggunakan URL yang sama dengan informasi tambahan untuk menentukan tampilan lain, praktik yang umum adalah:
Ini untuk mengubah pertanyaan, jadi PUT adalah metode yang benar untuk digunakan:
Daftar pertanyaan sebenarnya adalah sumber induk dari sebuah pertanyaan, jadi secara alami adalah:
Sekarang Anda mungkin membutuhkan lebih banyak lagi:
Tada :)
sumber
Empat contoh Anda bisa jadi:
Untuk menambahkan pertanyaan:
Server akan merespon:
sumber