📢 Грядущие изменения в api.steemit.com by rusteemitblog

View this thread on steempeak.com
· @rusteemitblog ·
$1.57
📢 Грядущие изменения в api.steemit.com
![](https://cdn.steemitimages.com/DQmdcpYG1Byaf7CW3AfXny7vERc7UW2HALG2b1phgxAFv3y/%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png)

Вчера (07.12.2018 в 23:00:00 по UTC) конечная точка api.steemit.com начала направлять избранные методы steemd непосредственно на hivemind. Если вы используете эту конечную точку для любого из приведенных ниже методов, вы должны как можно скорее начать тестирование своих приложений на api.steemitdev.com.

Этот шаг предпринят нами в рамках процесса удаления плагинов `tags` и `follows` из наших полных нод, функциональность которых была перенесена в сервис hivemind. И хотя hivemind пытается имитировать существующий формат запроса/ответа, как и всю основную логику, в этой схеме есть заметные исключения, о которых пойдет речь в этом посте.

Как мы уже рассказывали в [одном из наших постов](https://steemit.com/steem/@ned/2fajh9-steemit-update), одним из основных приоритетов Steemit Inc. является значительное снижение стоимости запуска ноды Steem. Направляя эти вызовы API на Hivemind мы значительно уменьшаем количество ресурсов, используемых нашими полными нодами.

## Предыстория

Целью реализации `condenser_api` для Hive является перенос соответствующего набора функций `tags` и `follows` со `steemd` для поддержки экземпляров `condenser` с минимальными требуемыми изменениями. Это позволит операторам нод снизить ресурсные требования `steemd`, и при этом заложит основу инфраструктуры для социальных API следующего поколения.

Несмотря на то, что мы пытались обеспечить прежнюю доступность соответствующих данных, в некоторых случаях это оказалось просто невозможно. Ярким примером является вызов `get_state`, ответ которого является монолитом, включающим в себя чрезвычайно широкий спектр данных. Часть возвращенных в ответ данных нерелевантна для большинства приложений, а часть из них полностью исключена из области действия hive (пример: расписание заверителей). Ещё один пример – при загрузке треда комментариев все задействованные объекты аккаунтов возвращаются в полном объеме (включая балансы, полномочия, статистику). Это приводит к дополнительному потреблению пропускной способности, при том что релевантна лишь небольшая часть данной информации.

В некоторых случаях части ответов API, неиспользуемые `condenser`, просто не были реализованы в hive, дабы сэкономить время или снизить сложность. В других случаях ожидаемые значения могут немного отличаться, но быть представлены в совместимом формате. Hive не может гарантировать точность данных в соответствии с самым последним блоком. Поскольку интерфейсы часто полагаются на вспомогательную информацию, такую как `steem_per_vests` или `feed_price`, hive хранит и возвращает некоторые выходящие за область действия, однако всё же доступные данные, но они будут кэшироваться с TTL продолжительностью вплоть до нескольких минут. Эти значения всё равно можно получить с помощью отправки других API-вызовов к steemd.

## Обзор изменений API

Мы перенесем API, переопределив конкретные методы steemd, переданные api.steemit.com.

Эти методы теперь будут обслуживаться hivemind:

```
Follows Queries

    get_followers                 [following, start_follower, follow_type, limit]
    get_following                 [follower, start_following, follow_type, limit]
    get_follow_count              [account]

Content Monolith

    get_state                     [path]

Trending Tags

    get_trending_tags             [start_tag, limit]         (!) only supports ('', 250)

Discussion Queries

    get_discussions_by_trending   {tag, limit, start_author, start_permlink}    trending
    get_discussions_by_hot        {tag, limit, start_author, start_permlink}    hot
    get_discussions_by_promoted   {tag, limit, start_author, start_permlink}    promoted
    get_discussions_by_created    {tag, limit, start_author, start_permlink}    created

    get_discussions_by_blog       {tag, limit, start_author, start_permlink}    account-blog
    get_discussions_by_feed       {tag, limit, start_author, start_permlink}    account-feed
    get_discussions_by_comments        {limit, start_author, start_permlink}    account-comments
    get_replies_by_last_update    [author, permlink, limit];                    account-replies
```
### Исключения
Эти вызовы НЕ будут переадресованы hivemind, а будут переадресованы легкой ноде steemd:

```
get_state.params=['@<user>/transfers']
get_state.params=['~witnesses']

```

### Не портированы

```
Deprecated/Unused Discussion Queries - NOT ported!

    get_post_discussions_by_payout        {tag, limit, start_author, start_permlink}    payout
    get_comment_discussions_by_payout     {tag, limit, start_author, start_permlink}    payout_comments
    get_discussions_by_cashout            {tag, limit, start_author, start_permlink}    UNUSED/cashout
    get_discussions_by_children           {tag, limit, start_author, start_permlink}    UNUSED/responses
    get_discussions_by_votes              {tag, limit, start_author, start_permlink}    UNUSED/votes
    get_discussions_by_active             {tag, limit, start_author, start_permlink}    DEPRECATED
    get_discussions_by_trending30         {tag, limit, start_author, start_permlink}    DEPRECATED (DNE)
    get_discussions_by_payout             {tag, limit, start_author, start_permlink}    UNUSED (DNE)
    get_discussions_by_author_before_date [author, start_permlink, before_date, limit]  UNUSED
```

Кроме того, следующие запросы также не были портированы, что означает, что они могут стать недоступны:

```
    get_feed_entries()
    get_feed()
    get_blog_entries()
    get_blog()

    get_account_reputations()
    get_reblogged_by()
    get_blog_authors()
    get_tags_used_by_author()
```

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

Многие из этих вызовов очень похожи (или идентичны) одному из поддерживаемых методов. Если это не так, пожалуйста, оставьте комментарий под [оригинальным постом](https://steemit.com/steemit/@steemitdev/upcoming-changes-to-api-steemit-com), и мы рассмотрим варианты.

### Не портированы, все еще доступны через steemd condenser_api

Поскольку они все еще являются частью консенсуса, и потребители ожидают, что они будут на 100% точны и актуальны, в настоящее время они не обслуживаются hivemind и будут по-прежнему доступны через steemd.

```
Content Primitives

    get_content                   [author, permlink]
    get_content_replies           [parent_author, parent_permlink]

    get_active_votes              [author, permlink]
    get_account_votes             [account]
```

### Изменения в конфигурации Steemd

После периода тестирования плагины `follow` и `tags` будут удалены из наших API-нод. Однако мы добавим плагин `reputation`, который позволит нам продолжать использовать существующую метрику репутации. Раньше он был подразделом функциональных возможностей плагина `follow`, и это единственный элемент логики, который трудно воспроизвести за пределами steemd. Если вы полагались на методы репутации, предоставляемые `follow_api`, вам необходимо обновить код и начать использовать `reputation_api`.

# Детали изменений API

## Предшествующий метод `call`

`call         ['condenser_api', method, params]`

Метод `call` прежнего стиля принимает в качестве параметров `[api, method, [params]]`. Hive направляет эти вызовы к соответствующему внутреннему методу.

**Примечания**
- `API` *должен быть* установлен на `Condenser_api`
- Мы не рекомендуем использовать этот метод

## Запросы Follow

```
condenser_api.get_followers
condenser_api.get_following
condenser_api.get_follow_count
```

Это простые прямые замены.

**Примечания:**
- плагин steemd follows способен удерживать несколько состояний follow; hive удерживает одно
- функция допускает недокументированные маловероятные крайние случаи
- внутренне состояние follow в hive должно быть blank, followed или muted

## Примитивы контента

**Важно:** хотя hive предлагает эти методы как часть своего `condenser_api`, api.steemit.com будет продолжать обслуживать их непосредственно из `steemd`. Тем не менее, hive использует их в своих рамках для создания ответов для `get_state` и различных методов `get_discussions_ *`.

**Примечания:**
- Формат ответа на комментарий в hive является подкатегорией steemd.
- устаревшие/неиспользуемые поля были удалены или нормализованы
- некоторые области сомнительной полезности не были удалены из реализации

## Монолит контента

`condenser_api.get_state`

Обратите внимание! Теперь Hive отказывает в обслуживании этих маршрутов:

- `/@account/transfers`
- `/witnesses` и `/~witnesses`

Hive обслуживает эти маршруты, запрошенные condenser, которые ни к чему не привязаны, однако steemd обрабатывает их в любом случае:

- `/@account/followed`
- `/@account/followers` 
- `/@account/permissions` 
- `/@account/password` 
- `/@account/settings` 

**Примечания:**

- встроенные данные get_dynamic_global_properties усекаются
- hive не хранит актуальные ключи для аккаунтов, но на страницах `/@account/xxx` он по-прежнему выдает минимальные данные аккаунта.

## Набирающие популярность теги

`condenser_api.get_trending_tags`

**Примечания:**

- параметры `[start_tag, limit]` должны быть оставлены пустыми или переданы как `['', 250]`
- в этой статистике учитываются только первичные теги (“категория”), а не все теги (в текущей реализации)

# Запросы обсуждения

## Глобальные

```
condenser_api.get_discussions_by_trending
condenser_api.get_discussions_by_hot
condenser_api.get_discussions_by_promoted
condenser_api.get_discussions_by_created
```

## Специфичные для аккаунта/блога

```
condenser_api.get_discussions_by_blog
condenser_api.get_discussions_by_feed
condenser_api.get_discussions_by_comments
condenser_api.get_replies_by_last_update
```

**Примечания:**
- все примечания к `get_content` применимы и здесь

# Тестирование и обратная связь

**Если ваше приложение или сервис использует какие-либо из перечисленных выше вызовов и api.steemit.com, начните тестирование с api.steemitdev.com как можно скорее.** Если вы обнаружили неподдерживаемый вызов API, который вам критически необходим, сообщите нам об этом, и мы найдем решение.

Обратите внимание, что в этот раз API `steemd` не меняются – только API, предоставляемые api.steemit.com.

Если какие-либо из ваших приложений по-прежнему используют `get_state`, мы настоятельно рекомендуем как можно скорее внести в них изменения и отказаться от него.

- *Команда Steemit*

---

***<div class="pull-right">Переведено @blockchained</div>***

**Оригинал поста: [ЗДЕСЬ](https://steemit.com/steemit/@steemitdev/upcoming-changes-to-api-steemit-com)**


---

## Если вам нравится то, что мы делаем - поддержите делегата blockchained в сети Steem
	
	
---

## Телеграм чат: https://t.me/steemit


---

# <center>[Загрузите десктопное приложение с открытым исходным кодом RuDex](https://github.com/blckchnd/rudex-ui/releases)</center>

---

# [Вы можете торговать токенами STEEM/SBD на RuDEX с 0% торговой комиссией](https://market.rudex.org/#/market/RUDEX.STEEM_BTS)

<center>[![](https://steemitimages.com/DQme823z4u64kGCsWsP9khWeUbohnB1rUx6Dji6ydTijDMi/%D0%91%D0%90%D0%9D%D0%9D%D0%95%D0%A0.png)](https://market.rudex.org)</center>
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
properties (23)
post_id67,171,708
authorrusteemitblog
permlinkgryadushie-izmeneniya-v-api-steemit-com
categorysteem
json_metadata{"format":"markdown","image":["https:\/\/cdn.steemitimages.com\/DQmdcpYG1Byaf7CW3AfXny7vERc7UW2HALG2b1phgxAFv3y\/%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5.png"],"links":["https:\/\/steemit.com\/steem\/@ned\/2fajh9-steemit-update","https:\/\/steemit.com\/steemit\/@steemitdev\/upcoming-changes-to-api-steemit-com","https:\/\/t.me\/steemit","https:\/\/github.com\/blckchnd\/rudex-ui\/releases","https:\/\/market.rudex.org\/#\/market\/RUDEX.STEEM_BTS","https:\/\/market.rudex.org"],"app":"steemit\/0.1","users":["blockchained"],"tags":["steem","blockchain","steemit","blockchained","rudex"]}
created2018-12-08 23:08:48
last_update2018-12-08 23:08:48
depth0
children0
net_rshares2,677,913,060,388
last_payout2018-12-15 23:08:48
cashout_time1969-12-31 23:59:59
total_payout_value1.234 SBD
curator_payout_value0.337 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length11,256
author_reputation35,300,249,728,591
root_title"📢 Грядущие изменения в api.steemit.com"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (39)