REST tidak membutuhkan JSON atau HTTP / 1.1
Anda bisa dengan mudah membangun layanan RESTful yang mengirim pesan protobuf (atau apa pun) melalui HTTP / 2
Anda dapat membangun layanan RESTful yang mengirim JSON melalui HTTP / 2
Anda dapat membangun layanan RESTful yang mengirim pesan protobuf melalui HTTP / 1.1
Layanan RESTful bukanlah "hack" di atas HTTP / xx, mereka adalah layanan yang mengikuti prinsip-prinsip arsitektur dasar yang telah membuat versi HTTP berhasil (seperti cache permintaan GET & replayability permintaan PUT).
gRPC, SOAP, et. al lebih seperti peretasan - peretasan di atas HTTP ke terowongan layanan gaya RPC melalui HTTP, untuk merutekan batasan firewall & middlebox. Itu tidak selalu berarti buruk. Terkadang Anda mungkin menginginkan layanan gaya RPC daripada layanan REST, dan kita harus hidup di dunia di mana middlebox sulit untuk diganti.
Jika Anda tidak punya waktu untuk membaca tentang definisi sebenarnya dari REST:
https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
Selalu ada TLDR; versi di wikipedia:
https://en.wikipedia.org/wiki/Representational_state_transfer
Jika Anda membutuhkan layanan bergaya RPC, tentu saja, gRPC sangat bagus. Jika Anda ingin hidup di web, atau Anda ingin semua manfaat yang datang dengan layanan gaya RESTful, maka buat layanan gaya RESTful. Dan jika terlalu lambat untuk membuat serial / deserialisasi data dalam format JSON di layanan tenang Anda, tidak masalah untuk menggunakan protobuf atau apa pun.
Jika gRPC adalah versi 2 dari apa pun, itu adalah SOAP versi 2. Yang tidak buruk, seperti SOAP.
Dan, tidak, Anda tidak bisa begitu saja "memanggil fungsi apa pun" dalam permintaan GET Anda, dan memiliki layanan RESTful.
Satu hal lagi: jika Anda akan menggunakan protobuf melalui layanan RESTful, lakukan dengan benar, gunakan header tipe konten, dll. Dengan itu, Anda dapat dengan mudah mendukung JSON DAN protobuf.
Mundur dari kotak SOAP saya sekarang ..;)