API своими руками
Сделать API. Основные положения
1 - Клиент к себе копирует js скрипты и один proxy.html (прокси-файл)
2 - В своем html клиент должен вписать пару js-строк, чтобы получить информацию от нашего сервиса.
Долго мне объясняли руководители, что да как должно быть..
Идея такая: все работает через фреймы
JavaScript рисует фрейм, где в src запрос на данные к серверу услуг данных.
На стороне сервера услуг формируются данные и выводит фрейм в src, которого в Гете собственно и будут данные (формат json).
На стороне клиента в JsvaScript должен разобрать полученное и вывести.
С чем столкнулась:
1 - В урле, в гете можно передавать ограниченную длину данных. В каждом браузере по своему. Для меня это было 1 500 символов.
2 - Раз в урл не влазит ответ, то его нужно рудить и разрезать на фрагменты. А на стороне клиента собирать.
3 - Когда рубишь на фрагденты нужно строго следить за длиной в кодированном виде. Т.е. длина строки (например с пробелами и другими символами) не равна ей же но кодированной функциями urlencode (php) или encodeURIComponent (js)
4 - Организовать такую работу api при которой не имело значения сколько раз в одном и том же html файле будет вызван один и тот же метод (обращение к серверу). Пришлось каждый вызов разбивать на процессы и давать каждому процессу идентификатор (PID) Собирать и разбирать данные соответственно нужно с учетом PID.
5 - В процессе разработке поставили задачу передавать к серверу большой текст, разбивая его на фреймы, а на стороне сервера хранить фрагменты до сборке не в БД, а в редисе (http://redis.io http://rediska.geometria-lab.net/documentation) Касательно редиса была проблема, когда данные записывались в него одновременно и в какой-то момент вывод производился дважды (т.е. 2 фрагмента одновременно приходили, по коду понимали, что все данные пришлии оба процесса вводили результат один и тот же). Использовала механизм транзакций.
Расписыватьи пояснять код нет времени :( может когда появится напишу
У меня ещё много моментов недоделанных... есть и ошибки, которые я намерена исправлять, но все же скачать посмотреть скипты тут. Пишите замечания.
Комментарии
Отправить комментарий