Входящий API. Как учесть в отклике результат внешних действий в API

Во входящем API иногда возникает потребность для выдачи точного результата по некоторому формату. В этом случае мы ставим тип вывода Text и выдаем в SELECT 2 нужный вывод: 

CREATE PROCEDURE [dbo].[api_t1_t1]
	@parameters ExtendedDictionaryParameter READONLY,
	@username nvarchar(256) -- API login (not as_users login)
as
begin
	-- inbound API method
	-- SELECT 1 - API result metadata
	select '' Msg, 1 Result, 0 ErrorCode, 0 OnlyData
	
	-- SELECT 2 -  API data with free col names
    select 'its result from incomeAPI_SP' t1x

   select 'notification' type, 'text1' text , 'editor1' [to], 'common' typeCode, '' url, '' additional

end
	

Однако в этом случае мы не можем учесть результат внешних действий (в данном случае создания уведомления, но могут быть и любые другие действия), задействованных в вызове метода API. 

Чтобы это сделать, необходимо реализовать, необходимо создать еще одну процедуру, которая отличается от начально добавкой суффикса _result

Пример: 

CREATE OR ALTER PROCEDURE [dbo].[api_t1_t1_result]
	@parameters ExtendedDictionaryParameter READONLY,
	@username nvarchar(256), -- API login (not as_users login),
	@outerData nvarchar(max)
as
begin	
	print @outerData
	select 'xxx' Msg, 1 Result
end
	

В итоге наш метод API выдаст по запросу "xxx"

В parameters передается словарь всех тех же параметров, что и был в начальной процедуре API метода, а также специальный параметр FalconApiGuid - он передается как во входную процедуру, так и сюда для возможности идентификации данных, сохраняемых в промежуточных внешних действиях (т.е. передали из action во внешние действия этот guid, сохранили данные по данному Guid в некой таблице, а затем в выходной процедуре _result извлекли эти данные для формирования выходного результата работы API метода).

При этом outerData содержит в себе JSON строку, в котором записаны все результаты по всем вызванным внешним действиям:

 [{"items":[{"key":"result","value":null,"title":null,"value2":"True"},{"key":"id","value":null,"title":null,"value2":"499"}],"result":true,"msg":null,"additionalData":null,"icon":null,"type":null}]

Процедура возвращает модель Result, Msg, ErrorCode, HttpCode, RedirectUrl (если result =1, то будет происходить замена выходного сообщения).

Параметры выходной модели если установлены то подменяют соответствующие параметры SELECT входящего API. 

ВАЖНО! Обязательно ставить тип вывода Text - (иначе будут добавляться ненужные элементы в выходной поток). 

Falcon Space - функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Насколько полезной была статья?

Google поиск по нашей документации

Falcon Space

Это снижение стоимости владения

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

Это быстрое внесение изменений

по ходу эксплуатации программы. Как создается функционал на платформе

Это простой удобный интерфейс

адаптация под мобильные устройства. Про юзабилити платформы

Нужна бесплатная консультация?
Получить оценку проекта
Создайте концепцию проекта на основе нашего шаблона и получите оценку проекта в виде КП.
Демо-сайт решений
Базисные решения, которые можно гибко адаптировать под себя: менять внешний вид, бизнес-логику и даже структуру базы данных.
Сайт использует Cookie. Правила конфиденциальности OK