Новости‎ > ‎

ProstoDiary: Типизированные API запросы

Отправлено 2 февр. 2020 г., 16:17 пользователем Deni Baskovsky   [ обновлено 11 авг. 2020 г., 03:30 ]
Текущий сценарий микроразметки делает возможными чтение машинами страниц в вебе. Для моего дневника мне показалось этого мало, решив расширить это, сделал машиночитаемыми сами API запросы-ответы между серверами. Стандарт JSONLD.

Прежний запрос api/v3
curl --basic -u "bot_email:master_password" -X POST -H "Content-Type: application/json" -H "Accept: application/json" --data '{"jsonrpc":"2.0","method":"ping","params":[[OBJECT]],"id":1}' http://127.0.0.1:9000/api
* Где OBJECT это обычный JavaScript объект.

Новый запрос api/v4
curl --basic -u "assistant_login:assistant_password" -X POST -H "Content-Type: application/json" -H "Accept: application/schema+json" --data '{"jsonrpc":"2.0","method":"ping","params":[[JSONLD]],"id":1}' http://127.0.0.1:9000/api
* Где JSONLD это JSON-LD =)

Плюсы:
  1. Реализация все еще текстовая и основана на JSON-RPC 2.0;
  2. Авторизация происходит через привычный basic связки логин/пароля, но теперь ассистента или пользователя напрямую;
  3. Ожидаемым ответом становится schema.org;
  4. Данные передаются в параметрах с типизацией schema.org с Linked Data Signatures;
  5. Можно сериализоваться в RDF и затем в GraphQL;
  6. PGP-шифрование определенного контента.

Минусы:
  1. Оверхед по размерам и плохая передача для больших бинарных данных. Если будет прям критично, можно задуматься о переходе на BSON-RPC, пока ожидаю что base64 хватит;
  2. PGP шифруется не весь ответ, а только abstract.

На картинке ниже пример процесса выполнения метода ping:
Comments