Таблицы. Как вывести данные из удаленного источника (по API) в компоненте Таблица
Есть некая внешняя система, у которой есть API. Требуется вывести данные из этого API в таблицу.
1. Указываем в настройках таблицы в поле Источник API коды исходящего запроса API (можно несколько через запятую без пробелов). В базе это поле таблицы as_crud_tables requestGetItems nvarchar(512).
2. Реализуем исходящий вызов /asapi
Пример запроса Request:
CREATE PROCEDURE [dbo].[api_falconUpdates_request]
@parameters ExtendedDictionaryParameter READONLY, -- входящие параметры для внутренней обработки (используйте Key, Value2)
@username nvarchar(32) -- текущий пользователь.
AS
BEGIN
-- SELECT 1 Msg, Result, Url (адрес, куда будет идти запрос)
select '' Msg, 1 Result, 'https://falconspace.ru/api/action/updates?typeID=2' Url
-- SELECT 2 PARAMETERS - параметры, которые будут передаваться во внешний источник
select 1
--select 'id' name, '5' value, '' [type] -- form (в форме передается), header (в http headers), get запросы передавайте прямо в URL
END
Все параметры, которые передавались в GetItems таблицы передаются в параметре @parameters этой процедуры
Response процедура без изменений:
CREATE PROCEDURE [dbo].[api_falconUpdates_response]
@response nvarchar(max),
@parameters ExtendedDictionaryParameter READONLY, -- входящие параметры для внутренней обработки (используйте Key, Value2 - те же что и на request)
@username nvarchar(32)
AS
BEGIN
-- SELECT 1
select '' Msg, 1 Result, @response Response
-- SELECT 2 Внешние действия
END
Проверяем, что запрос отрабатывает хорошо через ссылку для этого элемента (/api/req/{code}).
3. Делаем GetItems для таблицы:
CREATE PROCEDURE [dbo].[crud_tst-remotetable_getItems]
@filters ExtendedDictionaryParameter READONLY, -- ВАЖНО обязательно именно тип ExtendedDictionaryParameter (Key, Value2)
@sort sql_variant,
@direction nvarchar(8),
@page int,
@pageSize int,
@username nvarchar(32)
AS
BEGIN
declare @result TABLE(
id nvarchar(max),
name nvarchar(max),
[desc] nvarchar(max),
typeID nvarchar(max),
created nvarchar(max),
isMain nvarchar(max),
link nvarchar(max),
techChange nvarchar(max)
)
-- извлекаем ответ api запроса с кодом falconUpdates
declare @falconUpdatesJSON nvarchar(max)
select @falconUpdatesJSON = Value2 from @filters where [Key] = 'falconUpdates'
--Пример ответа: set @falconUpdatesJSON = '
--{"errorCode":0,"data":[{"id":1375,"name":"Доработка механизма обрезки фото (для thumb варианта фото) ","desc":"","type":"Исправление ошибки","created":"2020-05-17T09:22:32.977","isMain":false,"link":"","techChange":null},{"id":1362,"name":"Дерево. Поправлен момент с работой редиректа и выпадающем меню по пункту","desc":"","type":"Исправление ошибки","created":"2020-05-06T19:14:55.46","isMain":false,"link":"","techChange":null},{"id":1360,"name":"Исправлен момент с пейджингом в каталогах Lists","desc":"","type":"Исправление ошибки","created":"2020-05-06T16:55:47.803","isMain":false,"link":"","techChange":null},{"id":1359,"name":"Поправлен момент взаимодействия модального окна и popover окна (в быстром добавлении для таблиц)","desc":"","type":"Исправление ошибки","created":"2020-05-06T16:00:49.217","isMain":false,"link":"","techChange":null},{"id":1347,"name":"Исправлена ошибка с изменением статусов в Канбан доске","desc":"","type":"Исправление ошибки","created":"2020-04-22T11:44:51.287","isMain":false,"link":"","techChange":null},{"id":1345,"name":"Исправлена ошибка в параметрах импорта + добавлен параметр itemID для импорта/экспорта","desc":"","type":"Исправление ошибки","created":"2020-04-21T12:49:48.353","isMain":false,"link":"","techChange":null},{"id":1341,"name":"Исправлена критичная ошибка с фильтрами таблицы","desc":"Если были установлены на странице 2 таблицы с разными фильтрами, фильтры одной таблицы влияли на другую (JS ошибка). ","type":"Исправление ошибки","created":"2020-04-19T11:11:11.263","isMain":false,"link":"","techChange":null},{"id":1338,"name":"Уточнение логики по полю формы типа Таймер","desc":"Возможность перезапуска поля, исправление учета code и itemID в as-timer","type":"Исправление ошибки","created":"2020-04-17T21:41:04.297","isMain":false,"link":"","techChange":null},{"id":1329,"name":"Поправлено сохранение одиночного поля для поля формы Набор чекбоксов","desc":"","type":"Исправление ошибки","created":"2020-04-10T14:04:02.38","isMain":false,"link":"","techChange":null},{"id":1327,"name":"Правка ошибки в Метриках (boards)","desc":"","type":"Исправление ошибки","created":"2020-04-02T20:47:23.627","isMain":false,"link":"","techChange":null},{"id":1314,"name":"Выгрузка таблицы в Excel - удаление тегов html и поправлена граница таблицы","desc":"","type":"Исправление ошибки","created":"2020-03-30T15:46:03.927","isMain":false,"link":"","techChange":null},{"id":1313,"name":"Исправлена неточность при печати таблицы (добавлена перезагрузка страницы)","desc":"","type":"Исправление ошибки","created":"2020-03-30T15:44:43.24","isMain":false,"link":"","techChange":null},{"id":1312,"name":"Исправлена ошибка работы скриптов после экспорта таблицы в Excel","desc":"","type":"Исправление ошибки","created":"2020-03-30T15:43:56.543","isMain":false,"link":"","techChange":null},{"id":1308,"name":"Исправлена ошибка с сохранением HTML через inline edit в таблице","desc":"","type":"Исправление ошибки","created":"2020-03-25T16:04:09.103","isMain":false,"link":"","techChange":null},{"id":1297,"name":"Исправлена ошибка пагинации вложенной таблицы","desc":"","type":"Исправление ошибки","created":"2020-03-13T10:52:02.697","isMain":false,"link":"","techChange":null},{"id":1295,"name":"Исправлен момент по перекрытию контекстных форм и модальных окон","desc":"","type":"Исправление ошибки","created":"2020-03-11T13:14:25.17","isMain":false,"link":"","techChange":null},{"id":1274,"name":"Исправлена критичная ошибка в файловом менеджере при аплоде","desc":"","type":"Исправление ошибки","created":"2020-02-19T22:43:04.627","isMain":true,"link":"","techChange":"В панели управления код файлового менеджера (uploadsadmin) - строчными буквами"},{"id":1268,"name":"Обновлена либа Newtonsoft.JSON","desc":"Системное изменение, обязательно при обновлении ядра внести изменения в web.config","type":"Исправление ошибки","created":"2020-02-16T12:27:33.45","isMain":false,"link":"","techChange":"При обновлениях ядра заменить JSON либу в WebConfig \\n \\n \\n\\t\\t\\n\\t\\t"},{"id":1263,"name":"Исправлена проблема русских букв в URL (при приведении в нижний регистр)","desc":"","type":"Исправление ошибки","created":"2020-02-13T10:37:41.677","isMain":false,"link":"","techChange":null},{"id":1257,"name":"Исправлен момент по совместному использованию модальной формы и всплывающей формы","desc":"","type":"Исправление ошибки","created":"2020-02-06T11:54:58.187","isMain":false,"link":"","techChange":null}],"outputType":"json","result":true,"msg":""}
--'
insert into @result
SELECT *
FROM OPENJSON(@falconUpdatesJSON, '$.data')
WITH (
id int '$.id',
name nvarchar(512) '$.name',
[desc] nvarchar(max) '$.desc',
[type] nvarchar(512) '$.type',
created nvarchar(512) '$.created',
isMain nvarchar(512) '$.isMain',
link nvarchar(512) '$.link',
techChange nvarchar(512) '$.techChange'
)
-- 1 SELECT - сами данные
select * from @result
order by id desc
OFFSET @PageSize * (@Page - 1) ROWS
FETCH NEXT @PageSize ROWS ONLY;
-- 2 SELECT - кол-во в таблице
select count(*) from @result
END
Примечание:
- Обязательно используем ExtendedDictionaryParameter для параметра @filters.
- Отклик от каждого запроса API хранится в @filters с кодом этого запроса.
- В примере мы обрабатываем отклик в JSON. Чтобы это корректно работало, уровень совместимости SQL должен быть не ниже 130.
- В API метод request передается параметр caller - в нем указывается вызывающий объект в виде table-{code} или form-{code} (если это форма)
--Как узнать уровень совместимости SQL Server?
SELECT compatibility_level, *
FROM sys.databases --WHERE name = 'dbName';
--Как установить уровень совместимости
ALTER DATABASE dbName
SET COMPATIBILITY_LEVEL = 130;
Хорошая статья про разбор JSON через SQL - https://habr.com/ru/post/343062/
В итоге компонент будет сначала собирать данные с внешних источников и передавать их в GetItems в коллекции @filters (каждый response находим по коду запроса API).
Пример подобной таблицы https://falconspace.ru/tst-remotetable
Google поиск по нашей документации
- Руководства
- Основа Falcon Space
- Основные компоненты
- Возможности
- Коммуникация с пользователем
- Дизайн, стилизация
- API, Интеграции
- Каталоги
- Навигация
- Документы
- Дополнительные компоненты
- Продвижение, SEO
- Системные моменты
- HOWTO
- HOWTO Таблицы Таблицы. Как сделать сортировку в AS CRUD Таблицы. Как сделать Editable для галочки (Да/Нет) в AS CRUD Таблицы. Как редактировать колонку с датой Таблицы. Как связать 2 таблицы Таблицы. Как сделать таблицу в модальном окне (открывается в диалоговом окне) Таблицы. Как убрать показ количества строк результата в заголовке таблицы? Таблицы. Как связать таблицу и редактирование сущности (зависимая страница) Таблицы. Как использовать комментарии в таблицах Таблицы. Как добавить в фильтре значение Не выбрано со значением Таблицы. Как установить ширину колонки в таблице Таблицы. Как добавить диапазон даты или чисел (слайдер) в фильтр Таблицы. Как сделать операции только для некоторых строк Таблицы. Как делать различный набор столбцов одной таблицы для разных ролей Таблицы. Как реализовать подтаблицу (вложенная таблица), подформу в таблице Таблицы. Как скрыть строчные операции в таблице для определенных строк Таблицы. Как сделать в колонке таблицы управление файлами (картинками или документами) Таблицы. Как добавить коллбек после загрузки таблицы Таблицы. Как сделать таблицу на смартфоне в виде карточек Таблицы. Как работать с галочками в таблице Таблицы. Частые ошибки при настройке таблицы (почему не работает таблица) Таблицы. Как обновить подтаблицу после выполнения некой операции Таблицы. Как обрабатывать групповые операции через модальную форму Таблицы. Как создать предустановленные фильтры для таблицы Таблицы. Как вывести данные из удаленного источника (по API) в компоненте Таблица Как сделать сворачивание таблицы (collapse table) Таблицы. Загрузка таблицы по ссылке Как убрать старые dict процедуры в формах и таблицах Таблица. Как сделать фильтр с деревом галочек Таблицы. Как отключить сохранение состояния таблицы (фильтры) Таблицы. Как сделать ссылку на всю строку таблицы Таблицы. Как передать через URL значение фильтра Таблицы. Как сделать обрезание ячеек таблицы Сортировка строк в таблице Таблица. Создание сущности с учетом значений фильтров Оптимизация запроса SQL - извлечение данных для таблицы Кастомная разметка в таблице Таблицы. Как настроить дополнительные шапку и подвал у таблицы Таблица. Режим кастом вывода через JS (custom) Таблица. Как сделать зависимые фильтры в таблице Импорт данных в формате файлов txt, csv через таблицу Как гибко управлять видимостью столбцов таблицы Таблица. Как сделать раскрытие подстроки через любую ссылку Таблица. Режим быстрой фильтрации строк без обращения на сервер
- HOWTO Формы
- Работа с SQL
- HOWTO JS
- HOWTO Верстка
- Решение проблем
Falcon Space
Это снижение стоимости владения
за счет меньшего количества людей для поддержки и узкого стека разработки. Про снижение стоимости владения продуктом
Это быстрое внесение изменений
по ходу эксплуатации программы. Как создается функционал на платформе
Это простой удобный интерфейс
адаптация под мобильные устройства. Про юзабилити платформы