O que é a API JSON?
Certamente muitos que sabem.
JSON - Formato de texto para troca de dados
JSONAPI - Interface de programação de aplicativos
APIPalavras-chave aqui: interface de troca de dados.
A, então o que é JSON-RPC?
JSON - já estamos sabendo.
RPC - chamada de procedimento remoto
RPCConcluímos que JSON-RPC é: troca remota de dados.
Certamente essa troca de dados ocorrerá com uma certa interface, ou seja, com a API.
E qual é o problema ?! Você pergunta. E o fato é que alguns programadores que desenvolvem a API JSON, ou seja, a interface, esquecem o JSON-RPC e a próxima invenção da bicicleta começa. O programador do Frontend diz: “Eu lhe darei esse json”, e o programador do Backend responde: “Eu irei lhe devolver esse json”. E tudo ficaria bem, mas seria bom lembrar que pessoas inteligentes desenvolvem padrões há muito tempo, ou melhor, protocolos de troca de dados. E não alguns super complexos, mas muito simples:
JSON-RPCMuito provavelmente, se não para dizer que quase todo mundo conhece e até usa esses protocolos. Muitos servidores são gravados, etc. Mas, pessoalmente, nem tudo me convinha nos protocolos existentes. Eles me pareciam não suficientemente flexíveis e não lógicos em tudo. Como você deve ter adivinhado, decidi inventar minha bicicleta
json-rpc-1.5As principais diferenças dos protocolos existentes são:
- Parâmetro opcional de "sinal" - Assinatura ou Token
- Nas consultas, em vez do parâmetro param, o parâmetro data é usado, porque sempre enviamos dados, não apenas parâmetros.
- Em todas as respostas, o parâmetro "resultado" é sempre retornado e contém uma descrição do resultado da consulta "sucesso" ou "erro".
- Todos os dados nas respostas vêm no parâmetro "data"
- Você pode usar aliases para nomear os parâmetros de solicitação e resposta.
Pode parecer. que as diferenças são mínimas, mas são de fundamental importância.
A propósito, esse protocolo apareceu na prática, ou seja, Ao criar json api, usei a abordagem descrita neste protocolo.
PS:
Tendo recebido muitos comentários negativos e desvantagens, decidi verificar novamente, talvez esteja realmente fazendo algo errado? Naturalmente, tudo o que escrevo aqui é minha opinião pessoal e não imponho nada a ninguém. Deixe-me dar alguns exemplos:
1. Exemplo de solicitação
direta da API JSON do
Yandex :
{ "method": "GetClientInfo", "param": ["agrom"], "locale": "ru", "token": "0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f" }
Eles também podem ler sobre tokens:
tokens de autorização2. Exemplo do Sberbank API
Payment de um aplicativo móvel usando o Apple PayNão darei uma solicitação JSON, é grande, você pode ver o link.
É importante que a solicitação JSON contenha um "paymentToken".
Aqui está um link para os Requisitos de formação de token da AppleÉ importante entender que tokens e assinaturas na API são usados com frequência, naturalmente junto com outros métodos de proteção. E quem trabalha com várias APIs sabe disso muito bem.