Перевод статьи на реддите от пользователя caprisunkraftfoods.
Что из себя представлял отключенный XML API?
Программный интерфейс приложения (API) XML появился в EVE Online в 2007 году и с тех пор был основным способом взаимодействия программного обеспечения сторонних разработчиков с игрой. Например, с помощью него Evemon получал статус вашей учетной записи и информацию о персонаже, система авторизации вашего альянса знала, какие персонажи у вас были на учетных записях, и кадровики могли просматривать вашу корреспонденцию / уведомления / контакты, чтобы узнать, не шпионите ли вы. Когда вы создавали ключ API и передавали его кому-то, этот ключ позволял открыть доступ к подобной информации.
Что из себя представлял отключенный CREST API?
API CREST был представлен в 2012 году с намерением в конечном итоге заменить XML API. Конечные точки интерфейса добавлялись постепенно, но в итоге они предоставили большую часть информации, которую предоставлял XML API и многое другое с несколькими ключевыми отличиями:
- Данные были представлены в более современном формате JSON с которым было гораздо проще работать в сравнении с XML.
- Вместо ручного создания API ключей, пользователям нужно было подключаться с помощью учетной записи и SSO авторизации
Что такое ESI?
EVE Swagger Interface (сокращенно ESI) – на сегодня единственный действующий программный интерфейс приложения в игре и замена для интерфейсов XML и CREST. Так же как и CREST он использует JSON и SSO, но основные различия не видны простому пользователю. Основным недостатком XML и CREST было то, что они взаимодействовали с базой данных EVE напрямую. Это означало то, что любое изменение в коде игры или в её базе данных должно было быть повторено в XML и CREST. Это также означало то, что целый пласт полезной информации зачастую не был доступен для считывания.
ESI взаимодействует с серверами напрямую, по сути так же, как и ваш клиент EVE. Это значительно упрощает процесс разработки для CCP, а также открывает для разработчиков ESI множество новых возможностей.
Зачем надо было всё менять?
Об этом вы можете прочитать в нашем блоге, но в целом всё сводится к простому выводу. CREST был хорошей идеей, но в мире современной разработки программного обеспечения многое зависит от моды и новых веяний. Кто-то придумывает новую идею, другие группы развивают её привнося что-то своё и в итоге, в результате длительных усилий возникает всеобщий стандарт которым все начинают пользоваться.
CREST был создан на волне моды на REST API, но после 10 лет разработки проводимой крупными корпорациями и тысячами мелких компаний, мир более или менее сошелся во мнении о том, как построить правильный интерфейс. И этот результат совсем не похож на CREST.
В сочетании с проблемой с доступом к базе данных, имело смысл начать всё с нуля.
Я слышал много жалоб от разработчиков по поводу ESI. Что с ним не так?
На самом деле, всё не так плохо. Если вы когда-либо имели дело с API крупных сайтов вроде Твиттера\Фейсбука и т. п. ESI покажется довольно знакомым. На ранних стадиях разработки было довольно много ошибок и процесс разработки немного замедлялся в 2017 году, но в последние 6 месяцев была проделана колоссальная работа, в результате которой большинство ошибок были исправлены и функционал интерфейса приведен к паритету с XML API.
Главным недовольством является то что XML API был очень прост в использовании. API ключи предоставляли простой способ доступа к использованию интерфейса — их можно было просто прописать в URL и сразу же использовать на сайте или в электронной таблице, абсолютно не беспокоясь о процессе авторизации.
В то же время ESI является куда более сложным интерфейсом, использующим oAuth протокол для авторизации и гораздо большее число конечных точек для доступа к данным. Из-за этого разработка сторонних приложений может показаться куда более сложной задачей чем раньше, но тенденции в индустрии разработки движутся именно в этом направлении.
Тем не менее есть несколько разумных причин для недовольства:
-
ESI значительно увеличил количество запросов необходимых для получения данных. В качестве очень простого примера можно привести утилиту для сканирования локального канала. Ранее в XML API нужно было сделать всего 2 запроса — один для получения числового идентификатора персонажа по его имени и второй для получения информации о его корпорации\альянсе. С ESI этот же процесс сейчас может использовать тысячи запросов
-
У ESI есть ограничения по числу ошибок, и это приемлемо. Однако некоторые конечные точки доступа могут возвращать данные, неизбежно вызывающие появление новых ошибок. Эта проблема скорее всего решится со временем.
-
Изменение пароля от учетной записи аннулирует все ваши токены (т. е. удаляет все ваши API ключи)
-
Вы не сможете увидеть данные от других персонажей на учетной записи так как токены действуют только на отдельных персонажей, а не на учетную запись, в соответствии с замыслом разработчиков.
-
Вы не сможете посмотреть свой статус подписки или остаток игрового времени (опять же это продуманное решение разработчиков).
-
ESI использует систему токенов обновления с которой относительно непросто работать, особенно в электронных таблицах и простых веб-приложениях.
Насколько это безопасно?
Безопасность значительно улучшилась по сравнению с XML API. В прошлом, если у кого-то был ваш ключ API, у него был полный доступ к разрешенным для этого ключа данным. Из-за того что эти ключи зачастую передавались из рук в руки, хранились в электронных таблицах и были видны в системах авторизации, такие ситуации случались постоянно. Достаточно было взглянуть на сайт с утечками eveskunk, чтобы понять о чем речь.
В то же время токен доступа ESI действителен только в течение 20 минут, и токен обновления, использующийся для получения токена доступа, может работать только в сочетании с секретным ключом спрятанным внутри вашего приложения. Например, изгнанный из вашей корпорации рекрут-офицер или директор не сможет прихватить с собой API ключи всех игроков корпорации.
Приложения сторонних разработчиков
Отличный список актуальных приложений, поддерживаемый в актуальном состоянии игроком /u/Squizz был недавно обновлен в свете последних событий с API. Ниже представлен краткий список текущего состояния популярных приложений.
Управление персонажами
- EVEMon: бета-версия 4.0.0 поддерживает интерфейс ESI, но в работе программы всё еще могут встречаться небольшие ошибки. Для правильной работы приложения нужно создать идентификатор и секрет клиентского приложения. В данный момент создание идентификатора разрешено только игрокам с подтвержденной платежной историей. * EVEHQ: работает только частично. Текущая версия всё еще использует XML API и больше не будет обновляться, однако судя по заявлениям разработчиков версия с ESI должна выйти в недалёком будущем. * EVEthing2: является ответвлением от устаревшего кода EVEthing и предоставляет полную поддержку ESI. Из недостатков можно назвать присутствие небольших ошибок и сложность самостоятельной развертки веб-приложения (если вы хотите разместить приложение на своём сервере). * SkillQ: простейший отслеживатель навыков от создателя zKillboard. Поддерживает ESI и является неплохой заменой EVEMon если вам нужно всего лишь следить за изучением навыков. * Cerebral: приложение разрабатывается с нуля в качестве альтернативы EVEMon и в данный момент находится в альфа стадии. Работают отслеживания изучения навыков, информация о персонажах и контрактах, а так же система для СП фермы. Для правильной работы приложения нужно создать идентификатор и секрет приложения. * SEAT: SeAT 3 на текущий момент находится в состоянии открытой беты, но функционал полностью доступен и поддерживает ESI. * JEveassets: Несмотря на то что визуально утилита выглядит как одна из старейших в EVE Online, она регулярно обновляется и прекрасно работает. * Evernus: Переключился на ESI уже достаточно давно, по-прежнему работает отлично. * Evedata: Переключился на ESI уже давно.
- Eveboard: Сайт с информацией о персонажах от известного игрока Chribba перестал быть актуальным и дальнейших планов по его обновлению нет. * eveskillboard: Недавно появившаяся замена для eveboard.
Картографические приложения
Здесь никаких проблем. Siggy, Tripwire, Pathfinder и SMT использовали ESI на протяжении многих месяцев. Окончание поддержки встроенного игрового браузера не оставило этим приложениям иного выбора потому им пришлось позаботиться о переходе на новый интерфейс заранее для сохранения функционала.
Zkillboard
Zkillboard работал исключительно на ESI последние шесть месяцев, потому тут нет никаких опасений.
Приложения для оснастки
Основной функционал подобных приложений не затронут последними изменениями, только части вроде импорта навыков персонажей или импорта\экспорта оснасток кораблей в игру.
- Pyfa: Полная поддержка ESI в свежем обновлении. Просто обновитесь и повторно импортируйте данные персонажей в новой системе.
- o.smium: Разработчик заранее уведомил о том что веб-приложение прекращает существование 8 мая. Исходные коды и база оснасток доступна для скачивания всем желающим продолжить разработку.
- EFT: EFT не поддерживался уже достаточно давно и если вы по какой-то странной причине всё еще им пользовались, последнее изменение API поломает еще и импорт навыков персонажей.