Получить консультацию
+7(499)940-52-58
Моя корзина
Ваша корзина пуста
Корзина пуста!

Оформить заказ Очистить

Exante API. Запрос на сервер и получение данных. Часть 4

Exante API. Запрос на сервер и получение данных. Часть 4

Рассмотрим пример получения свойств символа AAPL с сервера.

Запрос на сервер

Данный запрос в документации описывается так:

Описание запроса в документации

Обмен происходит по стандартному протоколу json. Для формирования запроса нужен адрес сервера, по которому находится информация и коды доступа, которые помещаются в параметры запроса.

В общем виде адрес выглядит как:

https://api-demo.exante.eu/md/{version}/symbols/{symbolId}

где:

  • version – версия API Exante
  • symbolId – тикер символа в системе Exante

URL запроса для AAPL, с версией API 1.0:

 https://api-demo.exante.eu/md/1.0/symbols/AAPL.NASDAQ
 

Запрос на языке Python:

 requests.get("https://api-demo.exante.eu/md/1.0/symbols/AAPL.NASDAQ",
 auth=("f8767ed3-860d-4d55-bf7f-a98649b6b8b0", "plbsixdQNlUIX8BfCNEM")).json()
 

Здесь в параметре auth передаются имя приложения и ключ, полученный на этапе регистрации приложения.

Если информация доступна, получим ответ сервера 200, и нужные данные, упакованные в словарь:

 {'country': 'US',
 'currency': 'USD',
 'description': 'Apple',
 'exchange': 'NASDAQ',
 'expiration': None,
 'group': None,
 'i18n': {},
 'id': 'AAPL.NASDAQ',
 'mpi': 0.01,
 'name': 'Apple',
 'optionData': None,
 'ticker': 'AAPL',
 'type': 'STOCK'}
 
Запрос ответ сервера

Необходимо предусмотреть обработку ошибок, иначе программа будет аварийно останавливаться, если сервер недоступен или долго отвечает. Полный код для отправки запроса и обработки ответа, может выглядеть так:

 # выбор символа и получения его свойств
 def symbol_select(self):
 name_class = 'MainClass:'
 name_func = 'symbol_select: '
 # формирование url для запроса, в ответе dict
 url_requests = self.server + "/md/1.0/symbols/" + self.correction_name(self.symbol) + "." + self.exchange

 try:
 response = requests.get(url_requests, auth=(self.appl_name, self.appl_key), timeout=self.timeout_).json()
 return response
 except Timeout:
 print(name_class + name_func + "Сервер по адресу: ", url_requests, " не отвечает. TimeoutError")
 return False
 except ConnectionError:
 print(name_class + name_func + "Сервер по адресу: ", url_requests,
 " не отвечает, ошибка в имени. ConnectionError")
 return False
 except HTTPError:
 print(name_class + name_func + "Сервер по адресу: ", url_requests, " не отвечает. HTTPError")
 return False
 except TooManyRedirects:
 print(name_class + name_func + "Сервер по адресу: ", url_requests, " не отвечает. TooManyRedirects")
 return False
 except JSONDecodeError:
 print(name_class + name_func + "Ошибка декодирования. Неверное имя символа. JSONDecodeError")
 return False

Получение свойств символа оформлено в виде функции класса. В запрос requests добавлен параметр timeout, который ограничивает время ожидания ответа. Ответ в виде словаря будет находиться в переменной response

Обработка ответа сервера

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

 def init_value(self, symbol_info: dict):
 if 'ticker' in symbol_info:
 self.ticker = symbol_info['ticker']
 if 'mpi' in symbol_info:
 self.step_price = symbol_info['mpi']
 if 'currency' in symbol_info:
 self.currency = symbol_info['currency']
 if 'id' in symbol_info:
 self.symb_id = symbol_info['id']
 if 'description' in symbol_info:
 self.description = symbol_info['description']
 if 'name' in symbol_info:
 self.name = symbol_info['name']

Здесь symbol_info - это переменная response, в которой находится ответ сервера.

Автор:

Категория: Разработка | Добавил: lugovtsov7 (28.09.2020)
Просмотров: 48 | Теги: exante api
Всего комментариев: 0
avatar