Qu'est-ce que l'API JSON?
Certes, beaucoup de gens savent.
JSON - Format texte pour l'échange de données
JSONAPI - Interface de programmation d'application
APIMots-clés ici: interface d'échange de données.
A, alors qu'est-ce que JSON-RPC?
JSON - nous sommes déjà au courant.
RPC - appel de procédure distante
RPCNous concluons que JSON-RPC est: échange de données à distance.
Cet échange de données se produira sûrement avec une certaine interface, c'est-à-dire avec l'API.
Et quel est le problème?! Vous demandez. Et le fait est que certains programmeurs développant l'API JSON, c'est-à-dire l'interface, oublient JSON-RPC. Et la prochaine invention du vélo commence. Le programmeur Frontend dit: "Je vous donnerai un tel json", et le programmeur Backend répond: "Je vous rendrai un tel json". Et tout irait bien, mais il serait bon de se rappeler que les gens intelligents ont développé depuis longtemps des normes, ou plutôt des protocoles d'échange de données. Et pas des super complexes, mais très simples:
JSON-RPCTrès probablement, sinon pour dire que presque tout le monde connaît et utilise même ces protocoles. Un tas de serveurs sont écrits, etc. Mais personnellement, tout ne me convenait pas dans les protocoles existants. Ils me semblaient pas assez flexibles et pas logiques en tout. Comme vous l'aurez deviné, j'ai décidé d'inventer mon vélo
json-rpc-1.5Les principales différences par rapport aux protocoles existants sont:
- Paramètre «signe» facultatif - Signature ou jeton
- Dans les requêtes, au lieu du paramètre param, le paramètre data est utilisé, car nous envoyons toujours des données, pas seulement des paramètres.
- Dans toutes les réponses, le paramètre «résultat» est toujours renvoyé et il contient une description du résultat de la requête «succès» ou «erreur».
- Toutes les données dans les réponses viennent dans le paramètre «données»
- Vous pouvez utiliser des alias pour nommer les paramètres de demande et de réponse.
Cela peut sembler. que les différences sont mineures, mais elles sont fondamentalement importantes.
Soit dit en passant, ce protocole est apparu dans la pratique, c'est-à-dire Lors de la création de json api, j'ai utilisé l'approche décrite dans ce protocole.
PS:
Ayant reçu un tas de commentaires négatifs et d'inconvénients, j'ai décidé de vérifier à nouveau, peut-être que je fais vraiment quelque chose de mal? Naturellement, tout ce que j'écris ici est mon opinion personnelle et je n'impose rien à personne. Permettez-moi de vous donner quelques exemples:
1. Exemple de requête
API JSON directe Yandex :
{ "method": "GetClientInfo", "param": ["agrom"], "locale": "ru", "token": "0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f" }
Ils peuvent également lire sur les jetons:
jetons d'autorisation2. Exemple de
paiement Sberbank API à
partir d'une application mobile utilisant Apple PayJe ne donnerai pas de demande JSON, c'est grand, vous pouvez voir le lien.
Il est important que la demande JSON contienne un «paymentToken».
Voici un lien vers les exigences de formation des jetons d'AppleIl est important de comprendre que les jetons et les signatures dans l'API sont souvent utilisés, naturellement avec d'autres méthodes de protection. Et ceux qui travaillent avec diverses API le savent très bien.