Таблицы. Как вывести данные из удаленного источника (по 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://falcon.web-automation.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 <assemblyIdentity name=''Newtonsoft.Json'' culture=''neutral'' publicKeyToken=''30ad4fe6b2a6aeed'' ></a>\\n <bindingRedirect oldVersion=''0.0.0.0-12.0.0.0'' newVersion=''12.0.0.0'' ></bindingRedirect>\\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.
- Отклик от каждого запроса API хранится в @filters с кодом этого запроса.
- В примере мы обрабатываем отклик в JSON. Чтобы это корректно работало уровень совместимости SQL должен быть не ниже 130.
--Как узнать уровень совместимости 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://falcon.web-automation.ru/tst-remotetable
Примеры работы компонентов платформы Falcon Space
Примеры удобных таблиц и форм Примеры дашборда Примеры графиков и диаграмм Пример календаря Таблица с данными по API Пример вывода карты с точками Виды полей форм Пример виджета статистики Пример дерева иерархии Пример компонента Временная линия Пример карточки товаров Пример учета загрузки ресурса Пример Канбан доски Пример мастер формы Пример выгрузки документов Excel/Word Пример заполнения данных по ИНН- Руководства
- Основа Falcon Space
- Основные компоненты
- Возможности Falcon Space
- Подсистемы
- Дополнительные компоненты
- Интеграции
- HOWTO
- HOWTO Таблицы Таблицы. Как сделать сортировку в AS CRUD Таблицы. Как сделать Editable для галочки (Да/Нет) в AS CRUD Таблицы. Как редактировать колонку с датой Таблицы. Как связать 2 таблицы Таблицы. Как сделать таблицу в модальном окне (открывается в диалоговом окне) Таблицы. Как убрать показ количества строк результата в заголовке таблицы? Таблицы. Как связать таблицу и редактирование сущности (зависимая страница) Таблицы. Как использовать комментарии в таблицах Таблицы. Как добавить в фильтре значение Не выбрано со значением Таблицы. Как установить ширину колонки в таблице Таблицы. Как добавить диапазон даты или чисел в фильтр Таблицы. Как сделать операции только для некоторых строк Таблицы. Как делать различный набор столбцов одной таблицы для разных ролей Таблицы. Как реализовать подтаблицу (вложенная таблица), подформу в таблице Таблицы. Как скрыть строчные операции в таблице для определенных строк Таблицы. Как сделать в колонке таблицы управление файлами (картинками или документами) Таблицы. Как добавить коллбек после загрузки таблицы Таблицы. Как сделать таблицу на смартфоне в виде карточек Таблицы. Как работать с галочками в таблице Таблицы. Как сделать управляемый (динамический) Paging Таблицы. Частые ошибки при настройке таблицы (почему не работает таблица) Таблицы. Как обновить подтаблицу после выполнения некой операции Таблицы. Как обрабатывать групповые операции через модальную форму Таблицы. Как создать предустановленные фильтры для таблицы Таблицы. Как вывести данные из удаленного источника (по API) в компоненте Таблица Как сделать сворачивание таблицы (collapse table) Как убрать старые dict процедуры в формах и таблицах Таблица. Как сделать фильтр с деревом галочек Таблицы. Как отключить сохранение состояния таблицы (фильтры) Таблицы. Как сделать ссылку на всю строку таблицы Таблицы. Как передать через URL значение фильтра Таблицы. Как сделать обрезание ячеек таблицы Таблица. Создание сущности с учетом значений фильтров Кастомная разметка в таблице Таблицы. Как настроить дополнительные шапку и подвал у таблицы Таблица. Как сделать зависимые фильтры в таблице
- HOWTO Формы
- HOWTO JS
- HOWTO CSS
- HOWTO Верстка
- Решение проблем
Платформа Falcon Space
Это снижение стоимости владения
за счет меньшего количества людей для поддержки
Это быстрое внесение изменений
по ходу эксплуатации программы
Это современный интерфейс
полная адаптация под мобильные устройства
Бесплатное обучение разработке на Falcon Space
