Jadi, layanan RESTful memiliki seperangkat kata kerja tetap dalam kosa katanya. Layanan web yang tenang mengambil ini dari metode HTTP. Ada beberapa keuntungan untuk mendefinisikan kosakata tetap, tetapi saya tidak begitu mengerti maksudnya. Mungkin seseorang bisa menjelaskannya.
Mengapa kosakata tetap seperti yang diuraikan oleh REST lebih baik daripada mendefinisikan kosakata secara dinamis untuk setiap negara? Misalnya, pemrograman berorientasi objek adalah paradigma populer. RPC dijelaskan untuk mendefinisikan antarmuka tetap, tetapi saya tidak tahu mengapa orang menganggap bahwa RPC dibatasi oleh kendala ini. Kami dapat menentukan antarmuka secara dinamis sama seperti layanan RESTful secara dinamis menjelaskan struktur kontennya.
REST seharusnya menguntungkan karena dapat tumbuh tanpa menambah kosakata. Layanan tenang tumbuh secara dinamis dengan menambahkan lebih banyak sumber daya. Apa salahnya memperluas layanan dengan secara dinamis menentukan kosakata per objek? Mengapa kita tidak menggunakan metode yang didefinisikan pada objek kita sebagai kosa kata dan meminta layanan kita menjelaskan kepada klien apa metode ini dan apakah mereka memiliki efek samping atau tidak?
Pada dasarnya saya merasa bahwa deskripsi struktur sumber daya sisi server setara dengan definisi kosakata, tetapi kita kemudian dipaksa untuk menggunakan kosakata terbatas untuk berinteraksi dengan sumber daya ini.
Apakah perbendaharaan kata benar-benar memisahkan perhatian klien dari kekhawatiran server? Saya pasti harus khawatir dengan beberapa konfigurasi server, ini biasanya lokasi sumber daya di layanan tenang. Mengeluh pada penggunaan kosakata dinamis sepertinya tidak adil karena kita harus secara dinamis memberi alasan bagaimana memahami konfigurasi ini dalam beberapa cara. Layanan RESTful menggambarkan transisi yang dapat Anda lakukan dengan mengidentifikasi struktur objek melalui hypermedia.
Saya hanya tidak mengerti apa yang membuat kosakata tetap lebih baik daripada kosakata dinamis yang menggambarkan diri sendiri, yang dapat dengan mudah bekerja dengan sangat baik dalam layanan seperti RPC. Apakah ini hanya alasan yang buruk untuk membatasi kosakata protokol HTTP?
Refleksi
Hanya untuk memperjelas pikiran saya sedikit lebih baik daripada yang telah saya lakukan. Misalkan Anda merancang API tujuan umum, bahkan mungkin tidak menghadap ke web. Apakah Anda senang jika seseorang berkata Anda hanya bisa menggunakan nama metode ini pada objek Anda? REST tidak terbatas pada HTTP, tetapi pertimbangkan situasi di mana setiap API yang Anda tulis, menghadap web, atau hanya terdiri dari objek yang berisi GET POST PUT dan DELETE. Jadi metode object.foo yang ingin Anda tetapkan tidak mungkin. Anda harus mendefinisikan objek baru bernama foo, dan memanggil metode GET-nya. Pada dasarnya itulah cara REST bekerja, dan itu membuat saya sedikit tidak nyaman untuk memikirkannya. Anda tidak memiliki pemahaman generik yang lebih baik tentang apa yang dilakukan foo, Anda hanya dipaksa untuk membuat objek baru untuk apa yang pada dasarnya adalah metode pada objek induk. Lebih lanjut, API Anda tidak kalah rumit, Anda baru saja menyembunyikan kompleksitas antarmuka dengan membuat lebih banyak objek. Layanan web RESTful memaksa kami untuk mengadopsi antarmuka yang mungkin atau mungkin tidak cukup dalam konteks API yang kami paparkan. Mungkin ada alasan bagus untuk melakukan ini dengan API yang menghadap web, tetapi alasan yang baik untuk tidak mengadopsi antarmuka standar untuk setiap objek di setiap API tujuan umum. Contoh praktis akan dihargai.