Что же такое JSON API ?
Наверняка многие в курсе.
JSON — Текстовый формат обмена данными JSON
API — Программный интерфейс приложения API
Ключевые слова здесь: интерфейс обмена данными.
A, что же тогда JSON-RPC?
JSON — мы уже в курсе.
RPC — удаленный вызов процедур RPC
Приходим к выводу, что JSON-RPC это: удаленный обмен данными.
Наверняка этот обмен данными будет происходить с неким интерфейсом, т.е. с API.
И в чем проблема?! Спросите Вы. А в том, что некоторые программисты разрабатывая JSON API, т.е интерфейс, забывают про JSON-RPC.И начинается очередное изобретение велосипеда. Frontend программист говорит: «я передам тебе такой то json», а Backend программист отвечает: «а я тебе верну такой то json». И все бы ничего, но было бы хорошо вспомнить о том, что умные люди уже давно разработали стандарты, вернее протоколы обмена данными. И не какие то сверх сложные, а очень даже простые: JSON-RPC
Вероятно многие, если не сказать, что почти все, знают и даже пользуются этими протоколами. Написана куча серверов и т.д. Но вот лично меня не все устроило в существующих протоколах. Они показались мне не достаточно гибкими и не во всем логичными. Как вы уже догадались решил я изобрести свой велосипед json-rpc-1.5
Главные отличия от существующих протоколов это:
- Опциональный параметр «sign» — Signature (подпись) или Token
- В запросах вместо параметра «param» используется параметр «data», т.к. мы всегда отправляем данные, а не просто параметры.
- Во всех ответах всегда возвращается параметр «result» и в нем находится описание результата запроса «success» или «error».
- Все данные в ответах приходят в параметре «data»
- Можно использовать алиасы для названия параметров запроса и ответа
Может показаться. что отличия незначительные, но они принципиально важные.
Кстати, данный протокол появился на практике, т.е. создавая json api я использовал подход описанный в этом протоколе.
PS:
Получив кучу отрицательных комментариев и минусов, решил еще раз проверить, может я действительно, что то не так делаю? Естественно, всё что я здесь пишу, это мое личное мнение и я никому ничего не навязываю. Приведу пару примеров:
1. Пример запроса JSON API Yandex директ:
{
"method": "GetClientInfo",
"param": ["agrom"],
"locale": "ru",
"token": "0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"
}
У них же можно почитать и про токены: Авторизационные токены
2. Пример из Сбербанк API Оплата из мобильного приложения с использованием Apple Pay
JSON запрос приводить не буду, он большой, по ссылке можно посмотреть.
Важно, что JSON запрос содержит «paymentToken». Вот ссылка на требования к формированию токена от Apple
Важно понимать, что токены и подписи в API используются часто, естественно на ряду с другими методами защиты. И те кто работает с разного рода API, прекрасно это знают.