Ура! Больше новостей от девблога для разработчиков сайтов. В этот раз мы поговорим о рыночных данных.
Скажем сразу начистоту: мы НЕ считаем, что это убьет такие веб-сайты как EVE Central и не пытаемся это сделать. Формат нынешних данных не очень удобен для многих приложений. И данные не лучшим образом оптимизированы, если вы пытаетесь получить их в большом объеме о разных вещах и для различных регионов. Веб-сайты, такие как EVE Central и их API будут на связи еще долгое время. И мы надеемся, что EVEMon также не перестанет «выскабливать» кэш в дальнейшем.
Организация рынка
Когда приходится иметь дело с рыночными данными, одна из важных вещей - это знать какие типы вещей там имеются, чтобы получить информацию о них. Для этого случая у нас есть MarketTypes - ресурс, доступный по следующему маршруту: /market/types/
Мы также сделаем доступным ресурс MarketType. MarketTypes это собрание всех возможных ресурсов MarketType. Вы можете получить доступ к личным ресурсам MarketType по следующему пути: /market/types/<typeID:int>/
MarketTypes могут быть выведены с результатом до 1,000 на страницу. C 11,273 типами доступными в это время на рынке, записанными на 12 страницах.
Вы также можете отфильтровать MarketTypes указывая группу, которую можно взять из ресурса MarketGroups, находящихся по следующему маршруту: /market/groups/
MarketTypes принимает параметр группы и ожидает, что это будет ссылка (href) к MarketGroup.
Пример:
GET /market/types/?group=http://public-crest-sisi.testeveonline.com/market/groups/2/ HTTP/1.1 Host: public-crest-sisi.testeveonline.com Accept: application/vnd.ccp.eve.MarketTypeCollection-v1+json
Вселенная
Из-за технических решений в дни ранней Евы, данные рынка оказались разделены по регионам. Это значит, что вам необходима региональная информация из CREST, если вы хотите иметь возможность получать все рыночные данные из CREST без наведения справок о регионах в SDE. По этой причине, мы взяли и привели в порядок некоторые ресурсы вселенной и сделали их доступными. Теперь вам могут быть доступны ресурсы Регионов, Региона, Созвездий, Солнечных систем и Планет (Regions, Region, Constellation, SolarSystem, and Planet resources).
Начиная с Регионов находящихся по адресу /regions/ вы можете получить список всех регионов в игре. Из этого следует, что вы можете пройти к индивидуальным ресурсам Региона по адресу - /regions/<regionID:int>/ который даст вам всю информацию о регионе, включая созвездия этого региона. Я думаю, вы можете догадаться к чему это ведет. К тому, что вы можете пройти по ссылкам на каждое созвездие, затем на каждую солнечную систему и в, конце концов, на каждую планету.
Это позволит увидеть полную картину вселенной.
Это один из ключевых элементов, однако, этого вернемся к ресурсу Регион. Каждый Регион предоставляет подробную информацию для региона, такую как имя, X, Y, Z, и созвездиям, также дающим две других ссылки к ресурсам MarketBuyOrders и MarketSellOrders — ордера на покупку и ордера на продажу для текущего региона.
Сделаем это вместе
Важно помнить, что одна из идей стоящих за CREST, это то, что приложения не должны создавать URIs (унифицированные индикаторы ресурсов) сами. Для получения дополнительной информации, я настоятельно рекомендую вам посмотреть эту презентацию. Итак, запомнив все это, первый шаг - получить URI к тем типам рыночных ордеров, которые вам необходимы. Если вам просто необходимы все типы рынка - вы можете взять их из корня в MarketTypes. Каждый элемент в этом ресурсе будет иметь href для соответствующего типа.
Далее, если вы хотите получить рыночные ордера для каждого региона в игре, вы должны перейти от корня к Регионам, следуя по ссылке для каждого элемента к индивидуальному ресурсу Региона и взять href на MarketBuyOrders.
С href для каждого регионального MarketBuyOrders и href для всех типов, вы можете послать запрос GET к региональным MarketBuyOrders с дополнительным параметром типа, который включает href этого типа.
Делая так, как описано выше, во время указания заголовка Accept означает, что если мы когда-нибудь изменим пути или формат любого из ресурсов, ваше приложение будет продолжать работать, и я не буду против перемещения данных со всей вселенной в /universe/regions/ вместо простого /regions/.
Пример:
GET /market/10000002/orders/buy/?type=https://api-sisi.testeveonline.com/types/683/ HTTP/1.1 Host: https://api-sisi.testeveonline.com Authorization: Bearer jKVB8oaN9qboU5kQG4sWSoWxzSUaFkQaUyeisy8jWU3apRfYSgYsKpZGNbLh41xXEzuy-NDBX1FohEdEadaukQ2 Accept: application/vnd.ccp.eve.MarketOrderCollection-v1+json
Получение доступа
Ресурсы для групп рынка и типов рынка вместе со всеми данными вселенной будут представлены через общий CREST(public CREST). На самом деле это все есть на Sisi прямо сейчас: public-crest-sisi.testeveonline.com
Ресурсы ордеров покупок и продаж не будут доступны через public CREST. Для этого есть несколько причин, но на самом деле это хорошо для вас, парни. Поскольку этого ресурса не будет в public CREST, мы все же хотим, чтобы вы получили к ним доступ, и поэтому нам необходимо дать вам индивидуальный/требующий авторизации CREST (Authed CREST). Authed CREST к тому же имеет более высокий предел скорости. Это потребует создания приложений здесь, на сайте разработчиков и выбора ограничений доступных данных. Да, это не означает, что будет, в принципе, невозможно получить эти данные прямо из authed CREST в такие вещи как Excel, Google Docs, отправляя обычные заголовки вместе с потоком личных данных. Однако использование authed CREST дает нам больше уверенности в предоставлении открытых ресурсов, и подготовке к использованию authed CREST, сохраняющего конфиденциальные данные, а также позволит нам более эффективно контролировать/наблюдать за людьми, использующими его.
Работа по улучшению сайта разработчиков, чтобы позволить вам создавать приложения и использовать эти возможности в настоящее время продолжается, и должна быть закончена к выходу Реи. На данный момент, однако, уверен, многие из вас хотя протестировать эти возможности на Sisi; напишите в девблог, прокомментировав эту тему и включив имя вашего приложения и ID клиента. Затем, я обновлю приложение, чтобы получить обновленные токены, задав им определенные границы возможностей. Т.к. все это будет сделано вручную, пожалуйста поймите, если это будет немного медленно :)
Вывод
Вот и все. Я ожидаю сайт, копирующий пользовательский интерфейс рынка в ближайшее время, парни. У вас есть история рынка и информация об рыночных ордерах уже сейчас. Я должен отметить, что идет обсуждение создания ресурсов истории рынка, работающих как рыночные ордера с параметром.
Мы будем держать вас в курсе того, как это продвигается.- CCP FoxFour
Перевод © zima