19.06.2020
API хранения данных — Data Easy Cloud
Создал простенькую систему хранения данных доступную по API и нацеленную в первую очередь на приложения и пользовательские скрипты хранящих свои данные и требующие их синхронизации.
Начал создавать различные UserJS скрипты, которым требуется хранение различных данных. Но где их хранить? Это не критичные данные, требующие безумной защиты, но и не хочется добавлять в скрипты всякие ftp авторизации, перегружая его излишне. Поиск не дал результатов с готовыми системами (ладно уж бесплатными… да же платные отсутствуют). В результате решил написать свой небольшой сервис, API открыто для всех желающих.
Какой чек-лист был для начала:
- Работа по https, что бы не ругались браузеры на нарушение защиты
- Разграничение приложений, что бы их клиентские данные не пересекались
- Возможность создавать клиентов из самого приложения
- Возможность самому указать идентификатор клиента, если есть необходимость
- Передавать данные без декодирования в url_encode
Посмотрим что вышло в итоге, методов не много, чисто по делу:
- Регистрация приложения, выдаст ключ приложения, используется 1 раз при разработке приложения, записывается в код.
1234Запрос:GET https://net-bit.ru/API/dec/reg/Ответ:{"key_app":"43388953441"} - Регистрация конкретного клиента. Можно самостоятельно сгенерировать ID клиента (например в userJS для вк, можно отталкиваться от id страницы пользователя, и хранить уникальные настройки для каждого аккаунта вк, а не для ПК). Или можно получить случайный ключ клиента.
1234567891011Запрос:GET https://net-bit.ru/API/dec/reg/43388953441/ (43388953441 - ранее полученный ключ приложения)Ответ:{"key_app":"43388953441","uid":"278a3745261"}ИЛИЗапрос:GET https://net-bit.ru/API/dec/reg/43388953441/3321/Ответ:{"key_app":"43388953441","uid":"3321"} - Запись данных пользователя
12345Запрос:POST https://net-bit.ru/API/dec/put/43388953441/3321/ВСЕ ДАННЫЕ ПЕРЕДАЮТСЯ В ТЕЛЕ ЗАПРОСА.Ответ:{"update":"success"} - Чтение данных пользователя
1234Запрос:GET https://net-bit.ru/API/dec/get/43388953441/3321/Ответ:_"Записанные данные"
Всего 4 простых метода, один из которых делается еще до выхода приложения в свет, что бы забить в код приложения его ключ.
На всех запросах проверяются ключи приложения и идентификатор пользователя. В случае несовпадений, выдаются соответствующие ошибки:
1 2 |
{"error":"key not valid"} - ошибка в ключе приложения {"error":"uid not valid"} - ошибка идентификатора пользователя |
Таким образом, логика работы приложений довольно простая (подойдет не только userJS, любые приложения с синхронизацией на разных пк одного пользователя). Разработчик регистрирует приложение и записывает в коде ключ приложения. При первом запуске приложение у пользователя регистрирует и запоминает его идентификатор, либо генерирует по какому либо другому внешнему параметру. В дальнейшем по этому идентификатору синхронизирует данные пользвателя на разных пк, получая и записывая данные.
Все данные хранятся в сжатом виде, с помощью gzip. Если у вас есть желание сразу обмениваться данными с сервером в сжатом формате, что бы экономить трафик, то к запросу получения и отправки данных надо добавить /gzip/ в конец адреса.
1 2 |
GET https://net-bit.ru/API/dec/get/43388953441/3321/gzip/ POST https://net-bit.ru/API/dec/put/43388953441/3321/gzip/ |
На этой ноте думаю закончу. Не знаю пока, будет ли развиваться дальше это API, потому что на данный момент не вижу пока необходимого функционала нового. Если у вас будут идеи дальнейшей разработки, пишите.