Introdução
A Chamada de Procedimento Remoto (RPC) é um dos paradigmas mais simples de API, em que um cliente executa um bloco de código em outro servidor.
Imagine que você tem um aplicativo no seu computador (Cliente) e ele precisa calcular uma fórmula complexa. Em vez de calcular isso localmente, ele chama uma função chamada CalcularImposto(). A mágica do RPC é que essa função não existe no seu computador; ela está em um servidor do outro lado do mundo.
Para fazer isso parecer local, o RPC usa um conceito chamado Stub:
- O Cliente chama o Client Stub (um pedaço de código local que finge ser a função real).
- O Stub pega os parâmetros que você passou, empacota tudo (processo chamado de Serialização) e envia pela rede.
- O servidor recebe a mensagem, passa para o Server Stub, que desempacota os dados (Desserialização) e chama a função real.
- O resultado faz o caminho inverso até chegar ao seu cliente.
O grande objetivo do RPC é esconder a complexidade da rede. O desenvolvedor apenas chama funções, sem se preocupar em montar requisições HTTP ou gerenciar conexões manualmente.
Exemplo
POST
/api/conversations.archive
HOST slack.com
Content-Type: application/x-www-form-urlencoded
Authorization:
Bearer xoxp-1650112-jgc2asDae
channel=C01234
API de Conversação do Slack
Diferente do REST, onde o verbo é passado no argumento do método HTTP, no RPC o verbo é explícito dentro da URI.
| Método | Descrição |
|---|---|
| conversations.archive | Archives a conversation. |
| conversations.close | Closes a direct message or multi-person direct message. |
| conversations.create | Initiates a public or private channel-based conversation |
| conversations.history | Fetches a conversation's history of messages and events. |
| conversations.info | Retrieve information about a conversation. |
| conversations.invite | Invites users to a channel. |
| conversations.join | Joins an existing conversation. |
| conversations.kick | Removes a user from a conversation. |
| conversations.leave | Leaves a conversation. |
| conversations.list | Lists all channels in a Slack team. |
| conversations.members | Retrieve members of a conversation. |
| conversations.open | Opens or resumes a direct message or multi-person direct message. |
Top comments (0)