Сортировка
Для сортировки результатов запросы должны отправляться через поле пути edges
.
По умолчанию получаемые массивы данных не отсортированы и передаются в том виде, в каком были найдены в базе данных системы. Такой формат выдачи может б ыть неудобен для использования, если данных много и с ними нужно работать в определённом порядке. Для этих целей получаемые данные можно отсортировать.
Аргумент сортировки
Для сортировки данных используется аргумент order
, принимающий в качестве значения поле, по которому требуется отсортировать полученные объекты, и направление, указываемое одним из двух предзаданных значений:
ASC
— восходящий порядокDESC
— нисходящий порядок
Сортировка доступна только для тех полей, у которых эта возможность явно указана в схеме. Явным указанием считается использование интерфейсами входных значений формата XSortInput
, где X
— имя интерфейса, данные которого могут быть использованы при сортировке.
Пример схемы
"""
Список вариантов сортировки для интерфейса Instrument
"""
input InstrumentModelSortInput {
basicInformation: BasicInformationSortInput
currencyInformation: CurrencyInformationSortInput
tradingDetails: TradingDetailsSortInput
financialAttributes: FinancialAttributesSortInput
boardInformation: BoardInformationSortInput
additionalInformation: AdditionalInformationSortInput
}
"""
Список вариантов сортировки для поля basicInformation
"""
input BasicInformationSortInput {
symbol: SortEnumType
exchange: SortEnumType
description: SortEnumType
shortName: SortEnumType
type: SortEnumType
market: SortEnumType
}
"""
Список допустимых значений для сортировки
"""
enum SortEnumType {
ASC
DESC
}
Отправка запроса
Сортировка может применяться только по одному полю одновременно. Для получения отсортированного массива данных нужно добавить аргумент order
с полем для сортировки и её направлением в качестве значения:
query Instruments {
instruments(where: { basicInformation: { symbol: { contains: "SBER" } } } order: { basicInformation: { shortName: DESC } } ) {
edges {
node {
basicInformation {
symbol
...
shortName
}
}
}
}
}
{
"data": {
"instruments": {
"edges": [
{
"node": {
"basicInformation": {
"symbol": "SBERP181224PE360",
...
"shortName": "SR360CX4"
}
}
},
{
"node": {
"basicInformation": {
"symbol": "SBERP180924PE360",
...
"shortName": "SR360CU4"
}
}
},
{
"node": {
"basicInformation": {
"symbol": "SBERP190624PE360",
...
"shortName": "SR360CR4"
}
}
},
{
"node": {
"basicInformation": {
"symbol": "SBERP080524PE360",
...
"shortName": "SR360CQ4B"
}
}
},
{
"node": {
"basicInformation": {
"symbol": "SBERP300424PE360",
...
"shortName": "SR360CQ4A"
}
}
},
{
"node": {
"basicInformation": {
"symbol": "SBERP150524PE360",
...
"shortName": "SR360CQ4"
}
}
},
{
"node": {
"basicInformation": {
"symbol": "SBERP181224CE360",
...
"shortName": "SR360CL4"
}
}
},
{
"node": {
"basicInformation": {
"symbol": "SBERP180924CE360",
...
"shortName": "SR360CI4"
}
}
},
{
"node": {
"basicInformation": {
"symbol": "SBERP190624CE360",
...
"shortName": "SR360CF4"
}
}
},
{
"node": {
"basicInformation": {
"symbol": "SBERP080524CE360",
...
"shortName": "SR360CE4B"
}
}
}
]
}
}
}
Что дальше?
- Ознакомьтесь детальнее со спецификацией GraphQL, официальной документацией разработчиков и ответами на часто задаваемые вопросое
- Изучите базовый синтаксис GraphQL
- Узнайте о других дополнительных возможностях GraphQL API, доступных при взаимодействии с АЛОР Брокер API: получение массивов данных, постраничный вывод и фильтрация данных
- Опробуйте полученные знания в веб-песочнице боевого или тестового контура