Реализация API.
Модераторы: dobs, ArniXXX, hostess, bj
-
- Сообщения: 925
- Зарегистрирован: Сб мар 14, 2009 00:23
- Откуда: пгт. Войтовцы
- Контактная информация:
Реализация API.
Ребята, добрый день... Уже давно «чашу тыкву» на эту тему. Так, в частности, интересует целесообразность представление ответа сервера в XML-формате... А не проще сделать «построчный» вывод, что уменьшит трафик и упростит парсинг, собсно?.. Хотя, на данный момент склонен использовать именно использовать именно общепринятый метод...
Пример API-интерфейса ( XML ): юзать
Пример API-интерфейса ( XML ): юзать
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)
Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!
«ХО» – мое все.
А ты перевел свой домен на DNSSEC?
Slackware user
Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!
«ХО» – мое все.
А ты перевел свой домен на DNSSEC?
Slackware user
-
- HO Moderators
- Сообщения: 2504
- Зарегистрирован: Вс апр 09, 2006 14:42
- Откуда: /home/Ukraine/Kyiv
- Контактная информация:
Re: Реализация API.
JSON компактней ХМЛ
-
- Сообщения: 925
- Зарегистрирован: Сб мар 14, 2009 00:23
- Откуда: пгт. Войтовцы
- Контактная информация:
Re: Реализация API.
Да, согласен... Но, JSON — фишка JavaScript ( ИМХО ). Хотя уже существуют библиотеки под многие языки программирования, фреймоворки... Честно говоря, больше склонен к использованию XML. Большинство сервисов предоставляют API-интерфейс по средством JSON опционально, а вот XML — гарантировано.
Несколько дней парился с возможностью реализации кросс-доменного Аякса. Хочу отметить, что именно тут использование формата "JSON" подходит идеально.
В общем, на данный момент решил делать API сдвоенным — с поддержкой XML и JSON. Что позволит минимизировать/оптимизировать код, когда займусь написанием клиентов... Предполагаются следующие типы подключений: Web ( Ajax ), с использование упомянутой технологии; PHP ( Web server connect ); C++ ( кросплатформенный фреймворк wxWidgets).
*работу метода можно посмотреть на модели: go
( основано на динамической подгрузке js-файла, сгенерированного серверной частью приложения, где и помещены переменные-ответы. Все просто... )
( На примере не учтен механизм кеширования, но так как js-файл фактически является html-документом ( с тоски зрения сервера и браузера ), то проблем не наблюдается. На деле необходимо править настройки сервера... )
Несколько дней парился с возможностью реализации кросс-доменного Аякса. Хочу отметить, что именно тут использование формата "JSON" подходит идеально.
В общем, на данный момент решил делать API сдвоенным — с поддержкой XML и JSON. Что позволит минимизировать/оптимизировать код, когда займусь написанием клиентов... Предполагаются следующие типы подключений: Web ( Ajax ), с использование упомянутой технологии; PHP ( Web server connect ); C++ ( кросплатформенный фреймворк wxWidgets).
*работу метода можно посмотреть на модели: go
( основано на динамической подгрузке js-файла, сгенерированного серверной частью приложения, где и помещены переменные-ответы. Все просто... )
( На примере не учтен механизм кеширования, но так как js-файл фактически является html-документом ( с тоски зрения сервера и браузера ), то проблем не наблюдается. На деле необходимо править настройки сервера... )
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)
Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!
«ХО» – мое все.
А ты перевел свой домен на DNSSEC?
Slackware user
Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!
«ХО» – мое все.
А ты перевел свой домен на DNSSEC?
Slackware user
-
- Сообщения: 925
- Зарегистрирован: Сб мар 14, 2009 00:23
- Откуда: пгт. Войтовцы
- Контактная информация:
Re: Реализация API.
Хмм... На JavaScript в данном случае как-то напряжно использовать JSON в "чистом" виде ( громоздкая загрузка, нужен парсер ). Даже не знаю... Как по мне, то передавать обычные объекты на много удобнее. Зато XML валидный "на все 100" .
Выходит как-то так:
Выходит как-то так:
Код: Выделить всё
var js_data = {
"com": "noop",
"status": "ok",
"id_session": "1111111111111111",
"data": {
"information": "API v 0.1"
}
}
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)
Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!
«ХО» – мое все.
А ты перевел свой домен на DNSSEC?
Slackware user
Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!
«ХО» – мое все.
А ты перевел свой домен на DNSSEC?
Slackware user
-
- Сообщения: 925
- Зарегистрирован: Сб мар 14, 2009 00:23
- Откуда: пгт. Войтовцы
- Контактная информация:
Re: Реализация API.
Вроде все работает. Немного сегодня посидел и "допилил" код. Теперь модуль генерирует xml, js и json. Команд минимум — пока "прощупываю" технологию на предмет проблем...
Если кому интересно, то юзать так:
http://vps.my-services.km.ua/api/index. ... format=xml
( commands: noop, time, date; formats: xml, js, json )
Если кому интересно, то юзать так:
http://vps.my-services.km.ua/api/index. ... format=xml
( commands: noop, time, date; formats: xml, js, json )
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)
Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!
«ХО» – мое все.
А ты перевел свой домен на DNSSEC?
Slackware user
Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!
«ХО» – мое все.
А ты перевел свой домен на DNSSEC?
Slackware user
-
- Сообщения: 925
- Зарегистрирован: Сб мар 14, 2009 00:23
- Откуда: пгт. Войтовцы
- Контактная информация:
Re: Реализация API.
Начал по немного изучать фреймфорк wxWidgets. Решил писать клиент ( нужно для дела. Кроме того, можно автоматизировать учет и т.п. ) Это заготовка... Я его ласково называю "Выкидышем" Также буду работать в этом направлении... Все, иду отдыхать — неделю по 15 часов в сутки — перебор...
Ребята, перенесите, пожалуйста эту тему в тему по сервер, а то, по ходу, это все про одно...
Linux ( i486, Slackware 12.2 ):
Ubuntu Lucid ( i386 ):
Windows ( x86, XP SP2, Original ):
Source: http://www.my-services.km.ua/files/MSC/MSC_0.1.zip
Ребята, перенесите, пожалуйста эту тему в тему по сервер, а то, по ходу, это все про одно...
Linux ( i486, Slackware 12.2 ):
Ubuntu Lucid ( i386 ):
Windows ( x86, XP SP2, Original ):
Source: http://www.my-services.km.ua/files/MSC/MSC_0.1.zip
Последний раз редактировалось baytuch Пн окт 15, 2012 09:14, всего редактировалось 2 раза.
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)
Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!
«ХО» – мое все.
А ты перевел свой домен на DNSSEC?
Slackware user
Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!
«ХО» – мое все.
А ты перевел свой домен на DNSSEC?
Slackware user
-
- Сообщения: 925
- Зарегистрирован: Сб мар 14, 2009 00:23
- Откуда: пгт. Войтовцы
- Контактная информация:
Re: Реализация API.
Ребята, скажите, пожалуйста, а протокол HTTP 1.0 является устаревшим? Его можно использовать в новых разработках? Просто, меня возникли некоторые усложнения в последней версией, связанные с фрагментной загрузкой, "лишними" данными в выдаче сервера. Думаю, нужно будет реализовать эту функциональность в дальнейшем...
Наглядно на проблему можно посмотреть на ниже приведенных примерах выдачи хоста моего домашнего проекта или любого сервера в сети Интернет:
HTTP 1.1:
HTTP 1.0:
Корень зла в этой строчке в выдаче: Transfer-Encoding: chunked. Придется писать специЯльный декодер-сборщик...
Наглядно на проблему можно посмотреть на ниже приведенных примерах выдачи хоста моего домашнего проекта или любого сервера в сети Интернет:
HTTP 1.1:
Код: Выделить всё
HTTP/1.1 200 OK
Date: Tue, 04 Sep 2012 12:42:44 GMT
Server: Apache/1.3.33 (Unix) PHP/4.4.0
X-Powered-By: PHP/4.4.0
Connection: close
Transfer-Encoding: chunked
Content-Type: text/xml; charset=utf-8
c0
<?xml version="1.0" encoding="UTF-8"?>
<root>
<com>
noop
</com>
<status>
ok
</status>
<data>
<information>
My_SERVER_API_v_0.1
</information>
</data>
</root>
0
Код: Выделить всё
HTTP/1.1 200 OK
Date: Tue, 04 Sep 2012 12:45:18 GMT
Server: Apache/1.3.33 (Unix) PHP/4.4.0
X-Powered-By: PHP/4.4.0
Connection: close
Content-Type: text/xml; charset=utf-8
<?xml version="1.0" encoding="UTF-8"?>
<root>
<com>
noop
</com>
<status>
ok
</status>
<data>
<information>
My_SERVER_API_v_0.1
</information>
</data>
</root>
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)
Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!
«ХО» – мое все.
А ты перевел свой домен на DNSSEC?
Slackware user
Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!
«ХО» – мое все.
А ты перевел свой домен на DNSSEC?
Slackware user
-
- HO Moderators
- Сообщения: 2504
- Зарегистрирован: Вс апр 09, 2006 14:42
- Откуда: /home/Ukraine/Kyiv
- Контактная информация:
Re: Реализация API.
Думаю вначале надо определить сколько народу будут юзать сей скрипт и определится а стоит ли геморроится с ним если его заюзает пару человек...
-
- Сообщения: 925
- Зарегистрирован: Сб мар 14, 2009 00:23
- Откуда: пгт. Войтовцы
- Контактная информация:
Re: Реализация API.
Все, что вы видите — это лишь описание транспорта, общие алгоритмы передачи данных...
Дружище, на данный момент я с домашней машины предоставляю сервис, с использование протокола syncML ( из-за этого был трения в "Киевстаром" — он блочил порты, а юзеры в основном оттуда ведут коннект ) Наши местные не доверяют "левым" сервисам. Корочь, юзерей уже 300 чел... Юзают, как хранилище номеров и т.п. ( закрытый сервис ) Как я уже писал, эта прожка будет для учета, редактирования, заказов... В общем, юзать есть кому...
Дружище, на данный момент я с домашней машины предоставляю сервис, с использование протокола syncML ( из-за этого был трения в "Киевстаром" — он блочил порты, а юзеры в основном оттуда ведут коннект ) Наши местные не доверяют "левым" сервисам. Корочь, юзерей уже 300 чел... Юзают, как хранилище номеров и т.п. ( закрытый сервис ) Как я уже писал, эта прожка будет для учета, редактирования, заказов... В общем, юзать есть кому...
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)
Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!
«ХО» – мое все.
А ты перевел свой домен на DNSSEC?
Slackware user
Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!
«ХО» – мое все.
А ты перевел свой домен на DNSSEC?
Slackware user
-
- HO Moderators
- Сообщения: 2504
- Зарегистрирован: Вс апр 09, 2006 14:42
- Откуда: /home/Ukraine/Kyiv
- Контактная информация:
Re: Реализация API.
Мда ну в общем удачи, а по поводу вопроса, то думаю как вариант можно добавить переменную указывающую на версию html или просто версию АПИ...
Зацените как на аптаймроботе сделана своя АПИ без заморочек
Зацените как на аптаймроботе сделана своя АПИ без заморочек
-
- Сообщения: 925
- Зарегистрирован: Сб мар 14, 2009 00:23
- Откуда: пгт. Войтовцы
- Контактная информация:
Re: Реализация API.
Спасибо...
Честно говоря, не совсем понял... Вот, к примеру, если делать запросы браузером ( той библиотекой, что часы на ней работают ), то там такой проблемы нет, так как всеми этими делами заправляет браузер... В случае с фреймворком wxWidgets, то он сам по дефолту использует именно версию протокола 1.0. Но, допустим, что мы пишем свой код, который должен работать сам с этим протоколом. Пусть, на PHP... К примеру, вот код "щупальце" моего бота:
То получим вопрос: какой протокол юзать? Старый без проблем или новый с необходимостью писать декодер... ( вывод я привел )
Собсно, в этом вопрос...
Да, практично... Уже тестил...
Честно говоря, не совсем понял... Вот, к примеру, если делать запросы браузером ( той библиотекой, что часы на ней работают ), то там такой проблемы нет, так как всеми этими делами заправляет браузер... В случае с фреймворком wxWidgets, то он сам по дефолту использует именно версию протокола 1.0. Но, допустим, что мы пишем свой код, который должен работать сам с этим протоколом. Пусть, на PHP... К примеру, вот код "щупальце" моего бота:
Код: Выделить всё
function bot_socket($host, $ip_adress, $bot_query, $bot_ssl){
$bot_name = "MSBot";
$buff_string = "";
if ( $ip_adress == false ){
$ip_adress = $host;
};
if ( $bot_ssl == true ){
$port_connect = 443;
$pref_host = "ssl://";
} else {
$port_connect = 80;
$pref_host = "";
};
$segm_data[] = "GET /".$bot_query." HTTP/1.0\r\n";
$segm_data[] = "Host: ".$host."\r\n";
$segm_data[] = "User-Agent: ".$bot_name."/0.1 ( Linux i486; ru-RU )\r\n";
$segm_data[] = "Accept-Language: ru-RU, en; q=0.50\r\n";
$segm_data[] = "Connection: Close\r\n\r\n";
$fp = fsockopen($pref_host.$ip_adress, $port_connect, $errno, $errstr, 30);
if ( $fp != false ){
for ( $i = 0; $i<count($segm_data); $i++ ){
fwrite($fp, $segm_data[$i]);
};
while ( feof($fp) == false ){
$buff = fgets ( $fp, 8192 );
$buff_string = $buff_string.$buff;
};
fclose($fp);
} else {
$buff_string = false;
};
return $buff_string;
};
Собсно, в этом вопрос...
Да, практично... Уже тестил...
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)
Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!
«ХО» – мое все.
А ты перевел свой домен на DNSSEC?
Slackware user
Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!
«ХО» – мое все.
А ты перевел свой домен на DNSSEC?
Slackware user
-
- HO Moderators
- Сообщения: 2504
- Зарегистрирован: Вс апр 09, 2006 14:42
- Откуда: /home/Ukraine/Kyiv
- Контактная информация:
Re: Реализация API.
curl надо юзать а не сокеты...
-
- Сообщения: 925
- Зарегистрирован: Сб мар 14, 2009 00:23
- Откуда: пгт. Войтовцы
- Контактная информация:
Re: Реализация API.
Я пошел на этот шаг осознанно, так как считаю, что fsocketopen более гибкая в использовании… По поводу объема кода – тоже спорно… Понимаете, дружище, меня никто в плечи не гонит и над головой также никого нима… В общем, мне так удобней, особенно, если учесть, что весьма интересуюсь всякими низкоуровневыми штучками… А вы оценили фрагмент кода, где запрос делаем без предварительного ожидания ответа ДНС? Время получения ответа возрастает в два раза. Но, к сожалению, при работе через шлюз ССЛ, скорость несколько уменьшается…
А почему это плохо? Обоснуйте, пожалуйста…
А почему это плохо? Обоснуйте, пожалуйста…
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)
Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!
«ХО» – мое все.
А ты перевел свой домен на DNSSEC?
Slackware user
Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!
«ХО» – мое все.
А ты перевел свой домен на DNSSEC?
Slackware user
-
- HO Moderators
- Сообщения: 2504
- Зарегистрирован: Вс апр 09, 2006 14:42
- Откуда: /home/Ukraine/Kyiv
- Контактная информация:
Re: Реализация API.
Функционала у него больше, например многопоточность та и вообще намного удобней в использовании
П.С. Скорость работы не сверял с сокетами, если надо скорость то мож проще Perl юзать...
П.С. Раз Вы так любите мерить скорость то почитайте чем отличается обработка двойной кавычки от одинарной...
П.С. Скорость работы не сверял с сокетами, если надо скорость то мож проще Perl юзать...
П.С. Раз Вы так любите мерить скорость то почитайте чем отличается обработка двойной кавычки от одинарной...
-
- Сообщения: 925
- Зарегистрирован: Сб мар 14, 2009 00:23
- Откуда: пгт. Войтовцы
- Контактная информация:
Re: Реализация API.
Только вот моя памописная либа для организации кросдомменого Ajax'a не хочет работать под IE, а хотелось бы еще иметь возможность писать гаджеты под Win7, а они используют javascript-движок именно штатного браузера ОС. Буду думать, как преодолеть этот рубеж...
Fusion Player — модуль для CMS PHP-Fusion (demo video: посмотреть)
Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!
«ХО» – мое все.
А ты перевел свой домен на DNSSEC?
Slackware user
Не использую пиратского ПО
IP-PBX Asterisk українською. Зроби краще!
«ХО» – мое все.
А ты перевел свой домен на DNSSEC?
Slackware user