a client causes a procedure to execute on a different address space, usually a remote server. The procedure is coded as if it were a local procedure call, abstracting away the details of how to communicate with the server from the client program
GET /someoperation?data=anId
POST /anotheroperation
{
"data":"anId";
"anotherdata": "another value"
}
RPC is focused on exposing behaviors. RPCs are often used for performance reasons with internal communications, as you can hand-craft native calls to better fit your use cases
disadvantages
RPC clients become tightly coupled to the service implementation
a new API must be defined for every new operation or use case
it can be difficult to debug RPC
you might not be able to leverage existing technologies out of the box