Выполнение запроса по API

Работа с файлами и базами данных
Ответить
Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1211
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Версия LabVIEW: 2020
Откуда: Санкт-Петербург, Кронштадт
Благодарил (а): 11 раз
Поблагодарили: 1 раз
Контактная информация:

Выполнение запроса по API

Сообщение Sergey Ivanov »

Всем привет.
Давненько не заходил на форум, потому как с :labview: не работал. Но сейчас возник интерес к бирже )

https://tinkoffcreditsystems.github.io/ ... napi/auth/ - ссылка на описание.

Подскажите, какими инструментами я могу выполнить запрос на операцию или какое-либо действие:

Код: Выделить всё

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
    "strings"
    "time"
)

const (
    token   = "just_place_token_here"
    timeout = time.Second * 3
    url     = "https://api-invest.tinkoff.ru/openapi/sandbox/sandbox/register"
)

func main() {
    client := &http.Client{
        Timeout: timeout,
    }

    req, err := http.NewRequest("POST", url, nil)
    if err != nil {
        log.Fatalf("Can't create register http request: %s", err)
    }

    req.Header.Add("Authorization", "Bearer "+token)
    resp, err := client.Do(req)
    if err != nil {
        log.Fatalf("Can't send register request: %s", err)
    }

    defer resp.Body.Close()

    if resp.StatusCode != http.StatusOK {
        log.Fatalf("Register, bad response code '%s' from '%s'", resp.Status, url)
    }

    respBody, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Fatalf("Can't read register response: %s", err)
    }

    type Register struct {
        TrackingID string `json:"trackingId"`
        Status     string `json:"status"`
    }

    var regResp Register
    err = json.Unmarshal(respBody, &regResp)
    if err != nil {
        log.Fatalf("Can't unmarshal register response: '%s' \nwith error: %s", string(respBody), err)
    }

    if strings.ToUpper(regResp.Status) != "OK" {
        log.Fatalf("Register failed, trackingId: '%s'", regResp.TrackingID)
    }

    fmt.Println("Register succeed")
}
Пробовал с помощью GET VI Owning Palette: HTTP Client VIs, но не получилось ничего. Натолкните на путь истинный, пожалуйста.
Добро пожаловать на http://rk-stud.ru/
Artem.spb

Activity Автор
doctor
doctor
Сообщения: 2422
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 13 раз
Поблагодарили: 63 раза
Контактная информация:

Re: Выполнение запроса по API

Сообщение Artem.spb »

Sergey Ivanov писал(а): 03 фев 2021, 18:36 Пробовал с помощью GET VI Owning Palette: HTTP Client VIs,
Есть ещё POST и PUT :)
При беглом обзоре по ссылке не нашёл, какой из вариантов там используется.
Но копать надо в этом направлении + перебирать варианты отправляемых данных.
Artem.spb

Activity Автор
doctor
doctor
Сообщения: 2422
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 13 раз
Поблагодарили: 63 раза
Контактная информация:

Re: Выполнение запроса по API

Сообщение Artem.spb »

нашёл доки, там как раз написано, какой тип по какому запросу.
Чтобы экспериментировать, надо токены генерировать, а лень :)
https://tinkoffcreditsystems.github.io/ ... imit_order
Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1211
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Версия LabVIEW: 2020
Откуда: Санкт-Петербург, Кронштадт
Благодарил (а): 11 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Выполнение запроса по API

Сообщение Sergey Ivanov »

Спасибо, это тоже находил. Но не понимаю как сформировать ссылку для запроса.
Видится, что сначала идёт некий url, потом символ /, или другой символ, потом токен и потом команда. Вот с синтаксисом разобраться на основе примера не могу(
Добро пожаловать на http://rk-stud.ru/
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1101
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 4 раза
Поблагодарили: 11 раз
Контактная информация:

Re: Выполнение запроса по API

Сообщение Kosist »

Попробуйте JKI REST Client библиотеку - https://www.vipm.io/package/jki_lib_rest_client/, она отлично подходит для таких сервисов.
Главное - разберитесь с авторизацией (как правильно записать header для токена). Рекомендую установить Postman, и вначале попробовать API там, а потом "перенести" в виайки.
UPD: как-то так
Rest API.png
Rest API.png (8.7 КБ) 385 просмотров
Мы делили апельсин - много наших полегло...
rushonda
adviser
adviser
Сообщения: 216
Зарегистрирован: 26 фев 2016, 06:31
Версия LabVIEW: 18-19
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: Выполнение запроса по API

Сообщение rushonda »

Авторизация в песочнице (виртуальный счет) делается так.
Если еще нужны какие-то запросы тоже могу скинуть...)
Вложения
Autorization.png
Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1211
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Версия LabVIEW: 2020
Откуда: Санкт-Петербург, Кронштадт
Благодарил (а): 11 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Выполнение запроса по API

Сообщение Sergey Ivanov »

rushonda писал(а): 04 фев 2021, 12:17 Авторизация в песочнице (виртуальный счет) делается так.
Если еще нужны какие-то запросы тоже могу скинуть...)
А чем авторизация в песочнице отличается от авторизации на живом счёте ?
Если не сложно, скиньте.
Добро пожаловать на http://rk-stud.ru/
rushonda
adviser
adviser
Сообщения: 216
Зарегистрирован: 26 фев 2016, 06:31
Версия LabVIEW: 18-19
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: Выполнение запроса по API

Сообщение rushonda »

Авторизация реальная: покупаешь акции на реальные деньги со своего счета.
Авторизация в песочнице: покупаешь на виртуальные деньги, сам задаешь баланс и отрабатываешь стратегии - никакого отношения к реальным деньгам не имеет (в случае ухода в минус можно заново задать любой баланс). Завтра поищу примеры запросов...
Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1211
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Версия LabVIEW: 2020
Откуда: Санкт-Петербург, Кронштадт
Благодарил (а): 11 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Выполнение запроса по API

Сообщение Sergey Ivanov »

Я имел в виду авторизация по-разному проходит для песочницы и не для песочницы ?

Песочница https://api-invest.tinkoff.ru/openapi/s ... x/register
Не песочница https://api-invest.tinkoff.ru/openapi/

Этим ?
Добро пожаловать на http://rk-stud.ru/
Artem.spb

Activity Автор
doctor
doctor
Сообщения: 2422
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 13 раз
Поблагодарили: 63 раза
Контактная информация:

Re: Выполнение запроса по API

Сообщение Artem.spb »

Sergey Ivanov писал(а): 04 фев 2021, 19:58 Я имел в виду авторизация по-разному проходит для песочницы и не для песочницы ?

Песочница https://api-invest.tinkoff.ru/openapi/s ... x/register
Не песочница https://api-invest.tinkoff.ru/openapi/

Этим ?
адресом и токеном
Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1211
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Версия LabVIEW: 2020
Откуда: Санкт-Петербург, Кронштадт
Благодарил (а): 11 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Выполнение запроса по API

Сообщение Sergey Ivanov »

Artem.spb писал(а): 05 фев 2021, 01:08
Sergey Ivanov писал(а): 04 фев 2021, 19:58 Я имел в виду авторизация по-разному проходит для песочницы и не для песочницы ?

Песочница https://api-invest.tinkoff.ru/openapi/s ... x/register
Не песочница https://api-invest.tinkoff.ru/openapi/

Этим ?
адресом и токеном
Авторизоваться в песочнице получилось, на реальном счёте -нет, не авторизуется, почему-то.
Вложения
Скриншот 05-02-2021 17.31.42.png
Добро пожаловать на http://rk-stud.ru/
Artem.spb

Activity Автор
doctor
doctor
Сообщения: 2422
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 13 раз
Поблагодарили: 63 раза
Контактная информация:

Re: Выполнение запроса по API

Сообщение Artem.spb »

Sergey Ivanov писал(а): 05 фев 2021, 17:33 Авторизоваться в песочнице получилось, на реальном счёте -нет, не авторизуется, почему-то.
Что отвечает?
Адрес реального другой
Не стоит всем свой токен реального счёта показывать :)
Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1211
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Версия LabVIEW: 2020
Откуда: Санкт-Петербург, Кронштадт
Благодарил (а): 11 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Выполнение запроса по API

Сообщение Sergey Ivanov »

Вот ответ:
HTTP/1.1 404 Not Found
Server: nginx
Date: Fri, 05 Feb 2021 14:45:57 GMT
Content-Length: 25
Artem.spb писал(а): 05 фев 2021, 17:40 Не стоит всем свой токен реального счёта показывать :)
Я не верю, что кто-то подберёт 15 скрытых символов токена ) а если подберёт, я только руку этому человеку пожму )
Вложения
Скриншот 05-02-2021 17.46.34.png
Добро пожаловать на http://rk-stud.ru/
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1101
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 4 раза
Поблагодарили: 11 раз
Контактная информация:

Re: Выполнение запроса по API

Сообщение Kosist »

А почему не хотите попробовать JKI REST Client тулкит? Специально сделанный тулкит для REST API - который, по-сути, является оберткой над "чистыми" HTTP-request функциями. Так зачем изобретать велосипед?
И зачем Вам регистрацию выполнять каждый раз? В документации для "/sandbox/register" сказано - "Создание счета и валютных позиций для клиента". Вы его каждый раз будете создавать, это действительно необходимый сценарий? Тогда ссылку нужно поправить, она должны быть "openapi/sandbox/register", а у Вас "openapi/register".
Мы делили апельсин - много наших полегло...
Аватара пользователя
Sergey Ivanov

Activity Professionalism Gold Автор
expert
expert
Сообщения: 1211
Зарегистрирован: 01 мар 2009, 20:54
Награды: 5
Версия LabVIEW: 2020
Откуда: Санкт-Петербург, Кронштадт
Благодарил (а): 11 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Выполнение запроса по API

Сообщение Sergey Ivanov »

Kosist писал(а): 05 фев 2021, 20:00 А почему не хотите попробовать JKI REST Client тулкит?
Думал с чего-то простого начать, а потом, при необходимости, тулкиты использовать. Но, скачал, посмотрю.
Kosist писал(а): 05 фев 2021, 20:00 И зачем Вам регистрацию выполнять каждый раз?
Думал, что в начале работы в песочницы, нужна регистрация.
Kosist писал(а): 05 фев 2021, 20:00 Тогда ссылку нужно поправить, она должны быть "openapi/sandbox/register", а у Вас "openapi/register".
Я экспериментировал с ссылкой на реальный счёт.


upd
попробовал тулкит - работает, спасибо за подсказку. с ним пока что проще работать.
Добро пожаловать на http://rk-stud.ru/
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Сохранение данных»