Почтовый запрос Excel в формате json

Обновлено: 21.11.2024

Как я уже упоминал в статье GET, эти руководства по API будут одними из самых сложных на этом сайте. Они объединяют несколько концепций в области сетей, безопасности и удаленных вычислений. Тем не менее, основные методы выполнения запросов к API относительно просты, так что не расстраивайтесь. Ваши программы станут неизмеримо более мощными, когда вы добавите удаленные данные и обработку, и вы сможете произвести впечатление на своих коллег, начальника и друзей своими новыми возможностями.

Начнем!

Словарь

Прежде чем мы начнем программировать, позвольте мне определить и пояснить некоторые термины.

Я буду использовать слова вызов API и запрос API взаимозаменяемо.

У нас также есть несколько слов о сетях и вычислениях.

Серверы — это удаленные машины, которые выполняют обработку по запросу. Каждый веб-сайт размещается на сервере (крупные размещаются на нескольких серверах). Это просто удаленная машина, которая обслуживает запросы.

Сервисы – это объекты, которые выполняют обработку или бизнес для вас. API часто называют сервисом. Они могут управляться частными предприятиями, правительствами или организациями. Серверы — это машины, а службы — это сущности, выполняющие операции в интересах пользователей.

В сети есть действия на стороне клиента и на стороне сервера. Действия на стороне клиента происходят и обрабатываются на машине пользователя, а действия на стороне сервера происходят, как вы, наверное, догадались, на сервере. Действие на стороне сервера может заключаться в том, что сервер собирает все запрошенные вами данные, а действие на стороне клиента может заключаться в том, что макрос Excel на вашем компьютере создает диаграмму на основе данных, полученных с сервера. Подразделение определяет, кто выполняет действия и где физически происходят вычисления.

Наконец, в вычислениях есть две основные операции с дисками: чтение и запись. Чтение получает данные с диска, а запись помещает или изменяет данные на диске. Просто помните, что это дисковые операции, поэтому даже если операция может выполняться удаленно, где-то в мире есть физический диск, который должен выполнять операцию чтения или записи.

Запрос POST и история вычислений

Основная концепция заключается в том, что вы запрашиваете информацию, а сервер отправляет вам ответ. Фактически, каждый раз, когда вы переходите на веб-страницу, ваш браузер отправляет запрос GET для получения информации.

Если запрошенная вами информация была конфиденциальной, например данные учетной записи или медицинские данные, вам, вероятно, пришлось пройти аутентификацию, прежде чем служба ответит вам нужными данными.

Скелет кода VBA

Создавайте мощные макросы с помощью нашего бесплатного комплекта разработчика VBA

Подобные уроки могут быть сложными. Вот почему мы создали наш бесплатный комплект разработчика VBA и нашу большую книгу макросов Excel VBA в дополнение к этому руководству. Возьмите их ниже, и вы сразу же сможете писать мощные макросы.

Поскольку вы просите сервер внести изменения или выполнить дополнительную обработку, почти всегда необходимо пройти аутентификацию. Если вы этого не сделаете, сервис не будет знать, под какой учетной записью записывать изменения. Более того, сервис может отклонить любые ваши запросы, не прошедшие проверку подлинности. Это помогает предотвратить некоторые направления атак, приводящих к трате ресурсов, которые в противном случае могли бы быть использованы против службы.

Настройка POST

Мы собираемся наметить шаблон, которому будут следовать многие API, но вам нужно будет проверить документацию вашего конкретного API, чтобы узнать точный синтаксис. Требуется проверка документации, поскольку все API разные. С учетом сказанного, этот план и наш пример с использованием Google Forms станут для вас отличным началом.

Поиск учетных данных

Поскольку вам потребуется аутентифицировать большинство запросов, где-то в вашей учетной записи (для службы) вы должны найти термин, похожий на Ключ API или Закрытый ключ или Создать секретный ключ API. Это сгенерирует секретный ключ, который вам нужно вставить в переменную secret_key в нашем скелетном примере выше. Он будет служить паролем для аутентификации, чтобы API знал, что авторизованное лицо пытается подключиться.

Вам также необходимо знать свое имя пользователя. Иногда служба генерирует для вас уникальный идентифицирующий ключ. Это может быть хешированная или зашифрованная версия вашего имени пользователя в виде открытого текста, чтобы предотвратить раскрытие через незащищенное соединение. Он может состоять исключительно из буквенно-цифровых символов, чтобы избежать сложностей с обработкой специальных символов (например, @ в большинстве имен пользователей электронной почты). Что бы это ни было, вам, скорее всего, понадобится какой-то способ идентифицировать себя, прежде чем завершить подключение API.

Обычно эти две части информации можно найти в одном месте. Он может находиться в разделе Учетная запись или Инструменты разработчика или в каком-либо другом заголовке. Иногда ваш API-ключ будет скрыт каждый раз, когда вы уходите со страницы, и вам нужно будет сгенерировать новый, если вы хотите его увидеть.Имейте это в виду, так как это может привести к поломке вашей программы, если вы забудете обновить свои учетные данные в коде вашей программы.

Скрытие вашего ключа — это просто дополнительный уровень безопасности для предотвращения несанкционированных (но не неавторизованных) запросов от тех, кто взломал ваш аккаунт. Это может быть очень плохо, если, например, в вашем аккаунте есть акции на десятки тысяч долларов.

Идентификация идентифицирующей информации

Теперь, когда у вас есть учетные данные, вам нужно правильно отправить их на сервер. Многие API используют для этого заголовки.

Опять же, вам нужно будет обратиться к документации вашего API для точного наименования, но у вас могут быть что-то вроде этих имен и значений заголовков:

Когда вы добавите эти заголовки в объект запроса, он прикрепит эти фрагменты информации к данным, отправляемым по сети. Сервер API увидит заголовки, аутентифицирует запрос и начнет обработку всего, что находится в теле запроса.

Чтобы добавить заголовок, вы можете использовать метод .setRequestHeader объекта запроса. Поскольку мы уже присвоили идентифицирующий текст нашим строкам, мы можем добавить заголовки с помощью этих двух строк кода:

Сначала идет название заголовка, затем идет полезная нагрузка заголовка. Просто, нет?

Поиск правильной конечной точки

Построение тела запроса

В зависимости от вашего API, для обработки запросов GET вы можете просто добавить то, что вам нужно, в конец URL конечной точки. Для многих API цен на акции у вас может быть конечная точка /stocks , и вам просто нужно добавить строку запроса, например ?ticker=aapl,msft&startdate=05162019&limit=20 . Затем вы можете отправить запрос с помощью request.Send, и вы получите до 20 результатов по ценам на акции Apple и Microsoft, начиная с 16 мая.

Однако обычно для вызовов POST вам необходимо отправить дополнительную информацию. Допустим, вы хотите купить акции. Вам нужно как минимум сообщить службе:

  1. бегущая строка
  2. направление (покупка/продажа) и
  3. количество акций

Но большинство платформ для торговли акциями также позволяют вам выбирать:

  • тип ордера (рыночный, лимитный, стоп)
  • время действия (годно до отмены, годно до заполнения и т. д.)
  • должно ли быть выполнено все сразу, или допустимы приращения
  • приемлема ли торговля до/после выхода на рынок, и
  • лимиты и стопы (для нерыночных ордеров)

Лимиты и стопы могут быть процентными, конечными или определенными числами.

Хотя вполне приемлемо размещать всю эту информацию в строке URL (и некоторые API действительно могут это делать), чаще всего все структурируется в словарь JSON, а именно столько API настроено для обработки POST-запросов. . Пример Google Forms, который мы собираемся представить позже, просто помещает всю эту информацию в строку URL.

Форматирование запроса

Если в вашем API явно не объясняется, как форматировать запрос, вам, вероятно, придется поэкспериментировать. Это одна из самых неприятных частей подключения к API с использованием POST. К счастью, у большинства API есть необязательный или тестовый режим, поэтому вы можете протестировать свою программу, не внося необратимых изменений в свою учетную запись.

Возможно, вам потребуется настроить его в формате JSON, похожем на .

Вы можете догадаться о многих требованиях, но иногда реализация API требует нелогичного формата. Чаще всего я сталкивался с необходимостью представления чисел в виде строк. Иногда также трудно уловить проблему. Если вы постоянно получаете ошибки «плохого формата», сделайте глубокий вдох и проверьте типы данных, ожидаемые API.

Чтобы проиллюстрировать, даже если вы установите это как тело:

служба может отклонить ваш запрос! Чтобы правильно обработать запрос, вам может понадобиться использовать двойные кавычки, чтобы представить вашу строку как строку строк на сервере:

Здесь вы можете видеть, что первая и последняя кавычки заключают в себе всю строку, представляющую словарь, который сам помечен фигурными скобками. Затем каждый ключ и каждый элемент также явно преобразуются в строку, создавая словарь строк в одной строке порядка. Строка Key1 — это тикер, а строка Item1 — это msft .

Теперь у нас есть строка для тела, содержащего словарь, состоящий из строк. Фу.

Не для всех API требуется такая явная информация. Иногда они могут разрешить первый пример и попытаться внутренне проанализировать строку словаря. Это потребует, чтобы разработчики API были ориентированы на удобство использования. Тем не менее, безусловно, есть случаи, когда синтаксический анализ на стороне сервера может пойти не так, поэтому будьте готовы явно применять типы данных в интересах сервера.

Ответы POST

Есть коды состояния ответа, которые легко проверить. Они полезны для обнаружения ошибок и автоматизации некоторых ваших процессов. Например, если request.status равен 200, ваш запрос, вероятно, был в порядке.Вы можете легко настроить свою программу на проверку кода состояния, и если он равен 200, вы можете перейти к следующей задаче. Как всегда, разные API имеют разные коды состояния, но разработчики стараются стандартизировать наиболее распространенные.

Если возникла проблема или API возвращает важную информацию о вашем вызове API, эта информация будет указана в свойстве request.ResponseText. Сервер может сообщить вам, почему вызов был отклонен (например, неправильное форматирование), или он может сообщить вам подробности изменения учетной записи. Если вы покупаете 50 акций AAPL, в ответе для POST, вероятно, будет указан идентификатор заказа, время заказа и любая другая соответствующая информация.

Если вы реализуете вызов API для чего-то вроде инструмента покупки акций, вам придется отправить отдельный вызов GET, чтобы проверить статус заказа. Ордера на биржах открытого рынка не могут быть исполнены мгновенно, поэтому API, вероятно, разделяет идентификатор ордера и информацию о статусе ордера. С другой стороны, если действие вашего запроса полностью выполняется на сервере, например, вы изменили свое имя пользователя на форуме, ответ может подтвердить изменение сразу же в тексте ответа.

Как и большинство вещей в вычислительной технике, эти термины не подчиняются законам природы, а только стандартизированы. Если разработчик службы API-любитель хочет быть шутливым (и запутанным), он может поменять местами POST и GET и перекодировать статусы так, что 200 означает ошибку, а 500 (общий код ошибки) означает OK.

Тестирование и отладка

Иногда ответ API загадочен или кажется неприменимым к вашей ситуации. Эта проблема может возникнуть из-за того, что вы используете API версии 1.0, который требует дополнительного обслуживания, или, возможно, запрос настолько искажен, что сервер не может даже догадаться, что не так.

К сожалению, большинство служб не сообщают, какие данные они получили на своей стороне. Они ответят только кодом ошибки и, возможно, описанием ошибки. Чтобы увидеть, что получено на другой стороне, есть несколько служб корзины, где вы можете отправить запрос и проверить корзину (веб-сайт), и вы можете точно увидеть, что было получено на стороне API/веб-сайта корзины. Я не люблю рекламировать какой-либо конкретный сервис, поэтому поищите api bin, и вы найдете множество результатов поиска.

Возможно, вы также привыкнете к использованию Immediate Window и

который будет записывать статус и ответ в окно Immediate при каждом запуске.

Рабочий пример взаимодействия (Google Формы)

На протяжении всего урока я говорил в общих чертах и ​​не приводил для вас полный пример. Теперь я хочу закрепить ваше понимание, выполняя действия, а не просто читая их, поэтому Райан создал для нас этот пример.

Если вы похожи на меня, колеса уже вращаются с возможными идеями для применения такого инструмента. Представьте, что вы создали надстройку или рабочую книгу для нескольких клиентов. У вас может быть кнопка «Отправить отзыв», которая записывает их ответы в электронную таблицу, к которой у вас есть доступ.

После того, как вы закончите свой запрос, вы сможете увидеть свой текст POST здесь (подождите минуту или две, чтобы обновить его). Круто, правда?

Шаги по подключению VBA к вашей собственной форме Google

  1. Найдите «предварительно заполненную ссылку», связанную с вашей формой.
  2. Обновите apiURL в макросе выше, указав эту ссылку. Остановитесь прямо перед тем, как дойдете до чего-то вроде &entry.
  3. Обновите конечную точку, указав остальную часть строки, начиная с части URL, похожей на &entry. .
  4. Чтобы обеспечить правильную публикацию, вам нужно изменить viewform?usp=pp_url на formResponse?ifq и добавить &submit=Submit в конец вашей конечной точки.

Это почти единственные изменения, которые вам нужно внести в макрос выше. Просто, правда?

Заключение

Однако, как только вы справитесь с этим в первый раз, ваши программы станут намного мощнее. Excel и другие программы MS Office предлагают отличные встроенные инструменты визуализации, и большинство людей в определенной степени знают, как использовать продукты MS Office. Мало кто за пределами ИТ знает, как перемещаться по командной строке или терминалу Linux, чтобы использовать API без графического интерфейса.

Поэтому, если вам нужна красивая графика без взаимодействия между языками и приложениями, или вы хотите распространять свой проект, возможно, стоит потратить немного времени на выяснение того, как реализовать вашу программу с помощью VBA.

Помните: если вы серьезно относитесь к написанию макросов, подпишитесь на дополнительные советы по VBA. Просто заполните форму ниже, и мы поделимся нашими лучшими советами по VBA, которые помогут сэкономить время.

Готовы делать больше с VBA?
Мы собрали гигантский PDF-файл с более чем 300 готовыми макросами и хотим, чтобы вы получили его бесплатно. Введите свой адрес электронной почты ниже, и мы вышлем вам копию вместе с нашим комплектом разработчика VBA, полным советов, приемов и ярлыков VBA.

Прежде чем мы начнем, я хочу сообщить вам, что мы разработали набор шпаргалок по VBA, чтобы вам было проще писать лучшие макросы.Мы включили более 200 советов и 140 примеров макросов, поэтому в них есть все, что вам нужно знать, чтобы стать лучшим программистом VBA.

Эта статья была написана Кори Сарвером, автором блога The VBA Tutorials Blog. Посетите его в LinkedIn и на его личной странице.

Пакетная обработка JSON позволяет оптимизировать приложение путем объединения нескольких запросов (до 20) в один объект JSON. Например, клиент может захотеть составить представление несвязанных данных, таких как:

  1. Изображение, хранящееся в OneDrive.
  2. Список задач Планировщика
  3. Календарь для группы

Объединение этих трех отдельных запросов в один пакетный запрос может сократить значительную задержку приложения в сети.

Первый пакетный запрос JSON

Сначала вы создаете пакетный запрос JSON для предыдущего примера. В этом сценарии отдельные запросы никоим образом не зависят друг от друга и поэтому могут быть помещены в пакетный запрос в любом порядке.

Ответы на пакетные запросы могут отображаться в другом порядке. Свойство id можно использовать для сопоставления отдельных запросов и ответов.

Формат запроса

Пакетные запросы всегда отправляются с помощью POST в конечную точку /$batch.

Тело пакетного запроса JSON состоит из одного объекта JSON с одним обязательным свойством: запросы . Свойство Requests представляет собой массив отдельных запросов. Для каждого отдельного запроса требуются свойства id , method и url.

Свойство id в первую очередь используется как значение корреляции для связывания отдельных ответов с запросами. Это позволяет серверу обрабатывать запросы в пакете в наиболее эффективном порядке.

Отдельные запросы могут дополнительно содержать свойство заголовков и свойство тела. Оба этих свойства обычно являются объектами JSON, как показано в предыдущем примере. В некоторых случаях тело может быть значением URL-адреса в кодировке base64, а не объектом JSON, например, когда тело представляет собой изображение. Когда тело включено в запрос, объект заголовков должен содержать значение для Content-Type .

Формат ответа

Формат ответа для пакетных запросов JSON аналогичен формату запроса. Основные отличия заключаются в следующем:

Код состояния в пакетном ответе обычно равен 200 или 400 . Если сам пакетный запрос искажен, код состояния равен 400. Если пакетный запрос поддается разбору, код состояния равен 200 . Код состояния 200 в пакетном ответе не означает, что отдельные запросы внутри пакета выполнены успешно. Вот почему каждый отдельный ответ в свойстве responses имеет код состояния.

Последовательность запросов с помощью свойства dependOn

Отдельные запросы могут выполняться в указанном порядке с помощью свойства dependOn. Это свойство представляет собой массив строк, которые ссылаются на идентификатор другого отдельного запроса. По этой причине значения id должны быть уникальными. Например, в следующем запросе клиент указывает, что сначала должны выполняться запросы 1 и 3, затем запрос 2, а затем запрос 4.

Если отдельный запрос завершается с ошибкой, любой запрос, зависящий от этого запроса, завершается с ошибкой с кодом состояния 424 (сбой зависимости).

Обход ограничений длины URL с помощью пакетной обработки

Известные проблемы

Список текущих ограничений, связанных с пакетной обработкой, см. в разделе Известные проблемы.

См. также

Дополнительную информацию о формате пакетного запроса/ответа JSON см. в спецификации формата OData JSON версии 4.01, раздел Пакетные запросы и ответы.

Зарегистрированный пользователь Присоединиться Дата 03-01-2010 Местоположение Великобритания MS-Off Ver Excel 2003 Сообщений 5

VBA API Post JSON и загрузка файла

Здравствуйте, я пытаюсь написать простой скрипт на VBA (Excel), чтобы пользователь мог выбрать файл для загрузки через API в CKAN.

Я успешно протестировал скрипт с несколькими различными конечными точками API, но мне сложно понять, как включить файл в составной запрос (часы в Google ). Это текущий скрипт, который создаст новый файл/ресурс в CKAN, но в настоящее время не загружает связанный файл:

Я хочу загрузить файл как часть этого скрипта. Документ API сообщает следующее: Вы можете использовать параметр upload функции resource_update() для загрузки новой версии файла ресурсов. Для этого требуется multipart/form-data через параметр загрузки

Я считаю, что для этого мне нужно использовать

но последние несколько часов я гуглил, как это сделать, и не чувствую, что нашел нужный мне код.

Надеюсь, это понятно тем, кто знает, что делает! Буду очень признателен за любую помощь

Forum Expert Дата регистрации 16 июня 2015 г. Местоположение ONT, Канада MS-Off Ver Office 365 ProPlus Сообщений 5725

Не зная настройки и версии CKAN, трудно помочь.
Интересно, нет ли у них конечной точки для "application/x-www-form-urlencoded".

Но, как правило, в заголовке запроса должна быть указана граничная строка.

И файл должен быть отправлен как bytearray.

�Прогресс не достигается ранними пташками. Это сделано ленивыми людьми, пытающимися найти более простые способы сделать что-то».
― Роберт А. Хайнлайн

Зарегистрированный пользователь Присоединиться Дата 03-01-2010 Местоположение Великобритания MS-Off Ver Excel 2003 Сообщений 5

Документ CKAN API содержит фрагменты на Python и curl (у меня нет разрешения размещать здесь ссылку), я не уверен, означает ли это, что конечная точка будет работать с «application/x-www-form-urlencoded ".

Forum Expert Дата регистрации 16 июня 2015 г. Местоположение ONT, Канада MS-Off Ver Office 365 ProPlus Сообщений 5725

Например, у вас может быть приложение логики:

Запуск рабочего процесса при возникновении события внешнего веб-перехватчика.

В этой статье показано, как использовать триггер запроса и действие ответа, чтобы ваше приложение логики могло получать входящие вызовы и отвечать на них.

Дополнительные сведения о безопасности, авторизации и шифровании для входящих вызовов к вашему приложению логики, таких как безопасность транспортного уровня (TLS), ранее известная как протокол защищенных сокетов (SSL), открытая аутентификация Azure Active Directory (Azure AD OAuth). , предоставление доступа к приложению логики с помощью Azure API Management или ограничение IP-адресов, с которых исходят входящие вызовы, см. в статье Безопасный доступ и данные — доступ для входящих вызовов к триггерам на основе запросов.

Предпосылки

Учетная запись Azure и подписка. Если у вас нет подписки, вы можете зарегистрировать бесплатную учетную запись Azure.

Основные знания о том, как создавать приложения логики. Если вы не знакомы с приложениями логики, ознакомьтесь с разделом Что такое Azure Logic Apps?

Добавить триггер запроса

Ваше приложение логики держит входящий запрос открытым только в течение ограниченного времени. Предполагая, что ваше приложение логики включает действие ответа, если ваше приложение логики не отправляет ответ вызывающей стороне по истечении этого времени, ваше приложение логики возвращает вызывающей стороне состояние 504 GATEWAY TIMEOUT. Если ваше приложение логики не включает действие ответа, ваше приложение логики немедленно возвращает вызывающему объекту статус 202 ACCEPTED.

Войдите на портал Azure. Создайте пустое приложение логики.

Триггер запроса показывает следующие свойства:

В поле Схема JSON тела запроса при необходимости введите схему JSON, описывающую тело входящего запроса, например:

Дизайнер использует эту схему для создания токенов для свойств в запросе. Таким образом, ваше приложение логики может анализировать, использовать и передавать данные из запроса через триггер в ваш рабочий процесс.

Вот пример схемы:

Когда вы вводите схему JSON, дизайнер показывает напоминание о необходимости включить в запрос заголовок Content-Type и задать для этого заголовка значение application/json . Дополнительные сведения см. в разделе Обработка типов контента.

Вот как этот заголовок выглядит в формате JSON:

В триггере запроса выберите Использовать образец полезной нагрузки для создания схемы.

Введите образец полезной нагрузки и нажмите "Готово".

Вот пример полезной нагрузки:

Чтобы убедиться, что тело запроса входящего вызова соответствует указанной схеме, выполните следующие действия:

Чтобы входящее сообщение содержало точно такие же поля, которые описаны в вашей схеме, добавьте в схему требуемое свойство и укажите обязательные поля. Добавьте дополнительные свойства и установите значение false .

Например, следующая схема указывает, что входящее сообщение должно содержать поле msg, а не какие-либо другие поля:

В строке заголовка триггера запроса нажмите кнопку с многоточием (. ).

В настройках триггера включите проверку схемы и выберите "Готово".

Чтобы указать дополнительные свойства, откройте список Добавить новый параметр и выберите параметры, которые хотите добавить.

Имя свойства Имя свойства JSON Обязательно Описание
Метод method Нет Метод, который должен использовать входящий запрос для вызова приложения логики
Относительный путь relativePath Нет Относительный путь для параметра, который может указать URL-адрес конечной точки приложения логики. принять

В этом примере добавляется свойство Method:

Свойство Method появляется в триггере, так что вы можете выбрать метод из списка.

Теперь добавьте еще одно действие в качестве следующего шага в вашем рабочем процессе. Под триггером выберите Следующий шаг, чтобы найти действие, которое нужно добавить.

Например, вы можете ответить на запрос, добавив действие "Ответ", которое вы можете использовать для получения настроенного ответа и описано далее в этом разделе.

Ваше приложение логики сохраняет входящий запрос открытым только в течение ограниченного времени. Предполагая, что рабочий процесс вашего приложения логики включает действие ответа, если приложение логики не возвращает ответ по истечении этого времени, ваше приложение логики возвращает вызывающему объекту 504 GATEWAY TIMEOUT. В противном случае, если ваше приложение логики не включает действие ответа, ваше приложение логики немедленно возвращает вызывающему объекту ответ 202 ACCEPTED.

Когда закончите, сохраните приложение логики. На панели инструментов конструктора выберите Сохранить.

На этом шаге создается URL-адрес, используемый для отправки запроса, запускающего приложение логики. Чтобы скопировать этот URL-адрес, выберите значок копирования рядом с URL-адресом.

Дополнительные сведения о безопасности, авторизации и шифровании для входящих вызовов к вашему приложению логики, таких как безопасность транспортного уровня (TLS), ранее известная как протокол защищенных сокетов (SSL), открытая аутентификация Azure Active Directory (Azure AD OAuth). , предоставление доступа к приложению логики с помощью Azure API Management или ограничение IP-адресов, с которых исходят входящие вызовы, см. в статье Безопасный доступ и данные — доступ для входящих вызовов к триггерам на основе запросов.

Инициировать выходные данные

Подробнее о выходных данных триггера запроса:

Имя свойства JSON Тип данных Описание
headers Object Объект JSON, описывающий заголовки запроса
body Object Объект JSON, описывающий содержимое тела запроса

Добавить ответное действие

При использовании триггера запроса для обработки входящих запросов можно смоделировать ответ и отправить результаты полезной нагрузки обратно вызывающей стороне с помощью встроенного действия ответа. Вы можете использовать действие «Ответ» только с триггером «Запрос». Эта комбинация с триггером «Запрос» и действием «Ответ» создает шаблон «запрос-ответ». За исключением внутренних циклов по каждому элементу и циклов до тех пор, а также параллельных ветвей, вы можете добавить действие ответа в любом месте вашего рабочего процесса.

Если действие "Ответ" включает эти заголовки, Logic Apps удаляет эти заголовки из сгенерированного ответного сообщения, не отображая никаких предупреждений или ошибок:

  • Разрешить
  • Заголовки Content-*, за исключением Content-Disposition , Content-Encoding и Content-Type при использовании операций POST и PUT, но не включаются в операции GET.
  • Файл cookie
  • Срок действия истекает
  • Последнее изменение
  • Установить файл cookie
  • Передача-кодирование

Несмотря на то, что Logic Apps не помешает вам сохранить приложения логики, которые имеют действие Response с этими заголовками, Logic Apps игнорирует эти заголовки.

В конструкторе приложений логики под шагом, на который вы хотите добавить действие ответа, выберите Новый шаг.

Например, с помощью триггера запроса из предыдущего:

Чтобы добавить действие между шагами, наведите указатель на стрелку между этими шагами.Выберите появившийся знак плюс (+), а затем выберите Добавить действие.

В разделе Выберите действие в поле поиска введите ответ в качестве фильтра и выберите действие Ответ.

Триггер запроса в этом примере свернут для простоты.

Добавьте любые значения, необходимые для ответного сообщения.

В некоторых полях при нажатии внутри соответствующих полей открывается список динамического содержимого. Затем вы можете выбрать токены, представляющие доступные результаты предыдущих шагов рабочего процесса. Свойства из схемы, указанной в предыдущем примере, теперь отображаются в списке динамического содержимого.

Например, для поля "Заголовки" включите Content-Type в качестве имени ключа и задайте для ключа значение application/json, как упоминалось ранее в этом разделе. Для поля Body вы можете выбрать выходные данные тела триггера из списка динамического содержимого.

Чтобы просмотреть заголовки в формате JSON, выберите Переключиться на текстовое представление.

Здесь представлена ​​дополнительная информация о свойствах, которые можно задать в действии ответа.

Чтобы указать дополнительные свойства, например схему JSON для тела ответа, откройте список Добавить новый параметр и выберите параметры, которые хотите добавить.

Когда закончите, сохраните приложение логики. На панели инструментов конструктора выберите Сохранить.

Если у вас есть одно или несколько ответных действий в сложном рабочем процессе с ветвями, убедитесь, что запуск рабочего процесса обрабатывает хотя бы одно ответное действие во время выполнения. В противном случае, если все ответные действия будут пропущены, вызывающая сторона получит сообщение об ошибке 502 Bad Gateway, даже если рабочий процесс завершится успешно.

Читайте также: