Ingat bahwa dengan API REST, itu semua adalah pertanyaan tentang sudut pandang Anda.
Dua konsep utama dalam REST API adalah titik akhir dan sumber daya (entitas). Secara longgar, endpoint mengembalikan sumber daya melalui GET atau menerima sumber daya melalui POST dan PUT dan sebagainya (atau kombinasi dari yang di atas).
Diterima bahwa dengan POST, data yang Anda kirim dapat atau tidak dapat mengakibatkan penciptaan sumber daya baru dan titik akhir yang terkait, yang kemungkinan besar tidak akan "hidup" di bawah url POSTed. Dengan kata lain ketika Anda POST Anda mengirim data ke suatu tempat untuk penanganan. Titik akhir POST bukanlah tempat sumber daya biasanya ditemukan.
Mengutip dari RFC 2616 (dengan bagian yang tidak relevan dihilangkan, dan bagian yang relevan disorot):
9,5 POST
Metode POST digunakan untuk meminta server asal menerima entitas yang dilampirkan dalam permintaan sebagai bawahan baru dari sumber daya yang diidentifikasi oleh Request-URI di Request-Line. POST dirancang untuk memungkinkan metode yang seragam untuk mencakup fungsi-fungsi berikut:
- ...
- Memberikan blok data, seperti hasil pengiriman formulir, ke proses penanganan data;
- ...
...
Tindakan yang dilakukan oleh metode POST mungkin tidak menghasilkan sumber daya yang dapat diidentifikasi oleh URI . Dalam hal ini, 200 (OK) atau 204 (Tidak Ada Konten) adalah status respons yang sesuai, tergantung pada apakah respons tersebut termasuk atau tidak entitas yang menjelaskan hasil .
Jika sumber daya telah dibuat di server asal, respons HARUS 201 (Dibuat) ...
Kami telah terbiasa dengan titik akhir dan sumber daya yang mewakili 'barang' atau 'data', baik itu pengguna, pesan, buku - apa pun yang ditentukan domain masalah. Namun, titik akhir juga dapat mengekspos sumber daya yang berbeda - misalnya hasil pencarian.
Perhatikan contoh berikut:
GET /books?author=AUTHOR
POST /books
PUT /books/ID
DELETE /books/ID
Ini adalah CREST REST tipikal. Namun bagaimana jika kami menambahkan:
POST /books/search
{
"keywords": "...",
"yearRange": {"from": 1945, "to": 2003},
"genre": "..."
}
Tidak ada yang tenang tentang titik akhir ini. Ia menerima data (entitas) dalam bentuk badan permintaan. Data itu adalah Kriteria Pencarian - DTO seperti yang lain. Titik akhir ini menghasilkan sumber daya (entitas) dalam menanggapi permintaan: Hasil Pencarian . Sumber daya hasil pencarian bersifat sementara, disajikan segera kepada klien, tanpa arahan ulang, dan tanpa terkena dari beberapa url kanonik lainnya.
Itu masih REST, kecuali entitas bukan buku - entitas permintaan adalah kriteria pencarian buku, dan entitas respons adalah hasil pencarian buku.