Начинаем создавать набор сервисов easyAPI

Автор: Вячеслав Гринин | веб-мастеру | 09 Окт 2009 9:00 пп

Создавая статьи на темы, интересующие посетителей, отвечая на их комментарии, и даже выполняя платные заказы на эти темы я все больше понимал, что пора создавать некий набор сервисов и библиотек, реализующих насущные потребности пользователей веб-сайтов.

Собственно, этой статьей я начинаю публикацию на нашем ресурсе сервисов под общим названием easyAPI.

Что это будет?

EasyAPI это по большей части JavaScript-библиотеки, реализующие ту или иную функциональность, я пока до конца не знаю, какие именно сервисы я буду предоставлять и в каком виде. Но точно знаю, что эти сервисы помогут, например, владельцу сайта, поднятого на бесплатном хостинге, отобразить погодный информер, настроенный полностью под требования веб-мастера. Или, например, позволят определить географию посетителей определенного сайта и отобразить ее на карте страны. Или, например, отобразить посетителю сайта погодный информер именно его города. И все это, повторюсь, чаще всего будет возможно даже на хостинге без поддержки PHP.

Короче говоря, от слов к делу!

И сегодня на сайте easy4web.ru появляется первый такой сервис – GeoIP, позволяющий по адресу посетителя определить его приблизительное местоположение.

Он живет здесь http://easy4web.ru/api/geoip/get.php

Поддерживаемые параметры:
p – формат отдаваемых данных:

  • p=j – результат – JSON
  • p=a – результат – массив вида cc2=RU;cc3=RUS;cty=Moskow
  • p=x – результат – XML
  • p=ax – результат – массив обернутый в XML, вида <easy>cc2=RU;cc3=RUS;cty=Moskow</easy>
  • p=jx – результат – JSON обернутый в XML, вида <easy>cc2=RU;cc3=RUS;cty=Moskow</easy>

f – длина имен полей:

  • f=f – длинные имена, вида country_code
  • f=s – короткие имена, вида cc2

ip – IP-адрес, если он не задан, то в качестве адреса берутся координаты сервера, с которого пришел запрос REMOTE_ADDR.

s – кодировка(charset) отдаваемых данных.
Например s=koi8-r или s=utf-8, по умолчанию считается s=windows-1251.

Если я желаю получить информацию по собственному местоположению в формате JSON с длинными именами полей, я вызову URL http://easy4web.ru/api/geoip/get.php?p=j&f=f

В следующей статье на эту тему я расскажу о том, как можно применить данный сервис при вызове его из PHP-программы, и из JavaScript на удаленном сервере. Пока сервис easy.GeoIP находится в стадии тестирования, возможны некоторые изменения в его работе, о которых я буду предупреждать на сайте.

Сервис переехал на другой адрес. Теперь он живет здесь http://easyapi.ru/geoip/get.php

Добавился новый параметр c-коллбэк. Применяется только в режиме p=j/. Таким образом, вызвав http://easyapi.ru/geoip/get.php?p=j&c=onGet, мы получим пакет вида:

onGet('{"country_code":"RU","country_code3":"RUS","country_name":
"Russian Federation","region":48,"city":"Moscow",
"latitude":55.7522,"longitude":37.6156}');

Добавил поля error, country_name_ru, city_ru (их краткие эквиваленты: err, cnr, ctr). Возвращают описание ошибки, название страны на русском языке, название города на русском языке. также добавил возврат заголовка charset=utf-8, и указал заголовок кодировки и версии xml. Результат выложен по адресу: http://easyapi.ru/geoip/get1.php, после тестирования он перейдет в официальную версию. Особенно интересно, чтобы его протестировали те, кто уже пользуется этим сервисом без улучшений.

Исправил проблему с кодировками. Добавил во входные параметры требуемую кодировку, она теперь задается параметром s, например s=utf-8. По умолчанию считается charset=windows-1251. Ликвидировал тестовый хэндлер get1.php, все изменения внес в get.php после собственного тестирования. Скоро будет статья на тему того, как все это использовать в PHP и JavaScript.

Прочтите еще:

Отзывов: 23 »

  1. Отзыв Alex — Октябрь 23, 2009 в 4:07 пп

    Подписываюсь!

    Информер погоды, к примеру, легкий для установки в нете сложно найти для пользования на собственном сайте с определением местоположения! Люди которые их делали, похоже живут только в рамках своего города)

    Конструктивные предложения:
    1. Встроить в Google Gadget! (принесет отклик в использовании) У них плохие реализации. (Помимо погоды, возможно заинтересует определенный % гео магнитная обстановка)
    2. Создание информера стоимости ценных бумаг. Вопрос в том, что показывать и кому) Готов обсудить)

    EasyAPI — очень востребованная тема! Молодцы, парни, так держать!

  2. Отзыв Вячеслав Гринин — Октябрь 26, 2009 в 9:20 дп

    Меня вообще очень интересует тема кастомизации сайта под конкретного посетителя. И погодные информеры – лишь часть замысла.
    С гугл-гаджетами разбираюсь – скоро анонсирую.
    На днях будет опубликована новаая функция в рамках easyAPI – загрузка XML-файлов с других доменов посредством JavaScript, чтобы дать возможность пользователям бесплатных хостингов использовать данные XML-погоды на своем сайте без использования PHP.

  3. Отзыв Aтила — Декабрь 12, 2009 в 3:42 пп

    Почему ip – IP адрес параметр не принимает символических имен (example.com)?

  4. Отзыв Сергей — Февраль 24, 2010 в 10:59 дп

    Нельзя ли добавить callback в api? Или заключать в кавычки строки (формат http://easy4web.ru/api/geoip/get.php?p=a ) и добавить параметр prefix для переменных?

  5. Отзыв admin — Февраль 24, 2010 в 5:28 пп

    Добавил коллбэк. А также – перенес сервис на домен easyapi.ru. Подробности добавил в тексте статьи. Тестируйте, если что не так – исправлю.

  6. Отзыв Сергей — Февраль 24, 2010 в 10:48 пп

    Большое спасибо за быстрый ответ и быстрый патч :)
    Немного некорректный json возвращается, в случае неопределенного региона:
    onGet(’{”cc2″:”RU”,”cc3″:”RUS”,”cnm”:”Russian Federation”,”reg”:,”cty”:”",”lat”:60,”lon”:100}’);
    Поставьте там, пожалуйста, null или 0.

    Спасибо!

  7. Отзыв admin — Февраль 25, 2010 в 9:27 дп

    Подправил. Теперь для пустого поля возвращается две кавычки “”. И обратите внимание, что числовые данные – широта и долгота теперь тоже в кавычках.

  8. Отзыв admin — Февраль 25, 2010 в 9:30 дп

    Как думаете, может стоит оставить только два формата: a и j? Первый – для PHP-скриптов, второй – для JavaScript. Ведь в случае с PHP парсить гораздо легче строку, разбитую на части символом “точка с запятой”, а в случае с JavaScript вообще годится только пакет в JSONP-формате (так как только он обеспечивает кроссдоменность).

  9. Отзыв admin — Февраль 25, 2010 в 9:31 дп

    И насчет длинных и коротких имен переменных я кажется перестарался. :) Не слишком-то большая экономия трафика :) .

  10. Отзыв Сергей — Февраль 25, 2010 в 8:31 пп

    Спасибо за исправления :)
    По поводу форматов: я использую json с короткими именами. Если Вы думаете оставить только один вариант – я за короткие имена :)
    Для пхп скриптов можно также использовать json для сериализации данных ( разбирать массив или json строку, на мой взгляд, безразлично)

  11. Отзыв Alex — Июнь 20, 2010 в 12:59 пп

    Спасибо большое, очень полезная штука. Только поправьте случаи с ошибками, у Вас сейчас возвращает error=notfound в формате обычного текста, сделайте так, чтобы можно было узнать, вернулась ли ошибка, будет полезно. Спасибо заранее.

  12. Отзыв Alex — Июнь 20, 2010 в 2:35 пп

    Еще здорово было бы получать русскую интерпретацию городов, регионов итд ;)

  13. Отзыв admin — Июнь 21, 2010 в 1:40 пп

    @Alex: Русскую интерпретацию городов и стран сделал. Проверьте. Описание полей – смотрите в конце поста.
    @Alex: исправил отображение поля error, теперь это такое же поле как и все остальные. Если error – пустая строка, значит ошибки не было.

  14. Отзыв admin — Июнь 21, 2010 в 1:41 пп

    Результат пока выложен по адресу http://easyapi.ru/geoip/get1.php для тестирования.

  15. Отзыв Alex — Июнь 21, 2010 в 6:38 пп

    Спасибо за оперативность, а то мне уже пришлось словарь подключить, теперь такие костыли излишни ;) Очень понравилась идея Вашего проекта, творческих Вам успехов. Буду советовать друзьям ;)

  16. Отзыв Alex — Июнь 21, 2010 в 7:16 пп

    Только кодировку(cp1252 ;) ) исправьте, и можно на продакшн ;)

  17. Отзыв admin — Июнь 21, 2010 в 7:35 пп

    Русскую интерпретацию городов и стран сделать было несложно. Посмотрите на главную страницу справа сверху расположен погодный информер, который показывает погоду в городе посетителя сайта. Писал информер я. Собственно с него и взял переводы названий городов.
    Насчет кодировок, я умышленно делал UTF-8, правда не до конца протестировал, все ли работет верно и всегда ли удобно вытаскивать инфу из ответного пакета.
    Завтра еще поковыряю, может и 1251 сделаю.

  18. Отзыв Alex — Июнь 22, 2010 в 5:59 дп

    ну лично мне приходили символы в кодировке 1252, поковыряю сегодня, может чего не так понял. ;)

  19. Отзыв admin — Июнь 22, 2010 в 5:02 пп

    Похоже, сегодня руки не дойдут до разборки с кодировками. Много работы в других проектах.

  20. Отзыв Alex — Июль 1, 2010 в 10:10 пп

    Хотел поинтересоваться, как двигается процесс с кодировкой? На серверной стороне вопрос решается легко, а вот на клиентской, я таких решений не нашел =( Если есть возможность – поправьте кодировку в utf-8, сейчас, судя по показаниям декодера от арт.Лебедева – кодировка cp1252(именно 1252)

  21. Отзыв admin — Июль 7, 2010 в 8:28 пп

    Увы, пока не продвигается.
    Пока очень серьезно занят в другом проекте. Плюс к этому – собираюсь на две недели в отпуск. Предлагаю Вам подробно описать проблему: какой УРЛ вызываете, какую строку в ответ получаете, какие заголовки Вам приходят. Уж не знаю как там у Лебедева работает его определитьль кодировок, но я знаю, что заголовки ответа я выставляю charset utf-8 а поэтому cp1252 там ну никак быть не может. И приведите мне пожалуйста описание того, как Вы используете сервис: какой код его запрашивает? Желательно с копипастами.
    Прошу прощения за долгое молчание.
    Исправлять буду когда вернусь из отпуска.

  22. Отзыв Alex — Июль 9, 2010 в 10:13 пп

    http://easyapi.ru/geoip/get1.php
    Просто перехожу по url и получаю:

    country_code=RU;country_code3=RUS;country_name=Russian Federation;region=48;city=Moscow;latitude=55.7522;longitude=37.6156;country_name_ru=Ðîññèéñêàÿ Ôåäåðàöèÿ;city_ru=Ìîñêâà;error=;

    аналогично делаю и в скрипте, только добавляю параметр ip и формат json, получаю город в “битой” кодировке(хотя по-хорошему “битых” кодировок не существует ;) ) + по поводу ошибок, если передать в параметре ip строку, явно не похожую на ip, то получится
    error=address
    Пример:
    http://easyapi.ru/geoip/get1.php?ip=olololo&p=j&c=ololo

  23. Отзыв admin — Июль 27, 2010 в 11:42 дп

    Alex, извините за столь продолжительную задержку – был в отпуске.
    Исправил проблему с кодировками, теперь кодировку получаемых данных можно задавать самостоятельно при помощи параметра s.
    А что Вас смущает в error=address?

RSS-лента комментариев. Адрес для трекбека

Ваш отзыв