在 Azure 逻辑应用中使用 HTTP 请求






4.83/5 (4投票s)
在本例中,我们将演示如何设置 Azure Logic App 来接收 HTTP 请求,以及如何编写简单的 C# 代码通过您的应用程序触发 Logic Apps。
引言
在本文中,我们将解释什么是 Azure Logic App,为什么您应该使用它,以及如何让您的应用程序与该服务连接。
那么,让我们开始吧。
什么是 Azure Logic Apps?
想象一下,您有一个包含许多不同服务的场景,并且您的数据需要在这些服务之间按特定顺序共享。
因此,我们假设我们有一个 SharePoint 列表,每次添加新列表项时,我们都需要在 Salesforce 中插入一条具有完全相同数据的记录,然后发送一封电子邮件给某人。
这是一项简单的任务,但随着表单复杂性和插入数量的增加,可能会花费很多时间。
在这种情况下,我们可以使用 Logic App,一个完全托管在 Azure 中的 PaaS 服务,用于创建工作流以连接我们服务之间的操作和数据。有许多现成的连接器可用于云服务或本地服务,还有一个可视化设计器,可以非常轻松地创建您的工作流。
正如您所见,设计器模式非常直接且易于使用。
每个项目都有不同的选项,以匹配您正在使用的服务,并需要凭据来访问和授权您的操作。
有关 Azure Logic Apps(如计费和限制)的更多信息,请访问 Azure 网站。
更实际(也更复杂)的场景
现在,让我们想象一下,您已经创建了一个 **Web 应用程序** 来接收您的服务的在线请求。
但一天结束时,所有这些请求都应该进入您的 SharePoint,因为您的团队使用此软件来管理所有请求。
完成此任务的困难方法是:一天结束时,您的员工或团队中的某个人手动将所有请求输入到您的 SharePoint 中。
这种方式听起来不太聪明,对吧?
因此,现在我们知道 Azure Logic App 可以做什么,并且知道 SharePoint 已经有一个现成的连接器可用,如果我们可以直接从 Web 应用程序调用此工作流,而无需用户输入数据或启动任何操作,那么效率会更高,也更容易。这就是我们将要使用和讨论的场景。
为了说明我们场景的工作流程
因此,在开始编写表单代码之前,让我们从头开始创建一个新的 Logic App 来接收来自我们 Web 应用程序的这些请求。
创建我们的 Azure Logic App
打开 Azure 门户,用您的帐户登录,然后在左侧单击 **新建 > Web + 移动 > Logic App**。
只需要填写几个必填字段。为您的 Logic App 选择一个 **名称**、**资源组** 和 **位置**,然后单击 **创建**。
部署成功后,我们就可以开始编辑我们的 Logic App 了。
要访问它,请在左侧浏览 **所有资源 > [您的 Logic App 名称]**。
单击您的 Logic App 将打开 **Logic Apps 设计器**。在欢迎屏幕中,有很多现成的模板可供使用。这些模板是了解 Logic Apps 功能和查看最流行场景的绝佳资源。
让我们创建一个 **空白 Logic App**。
首先,我们需要选择工作流的第一步。我们将从 Web 应用程序触发我们的 Logic App,一种方法是向我们的应用程序 URL 发送一个 **HTTP POST 请求**,因此从下拉列表中选择 **请求**。
现在我们只需要插入一个 JSON Schema,其中包含我们将通过 Web 应用程序发送的变量。
好的,假设我们有一个非常简单的表单,只有三个字段:**姓名、事件** 和 **参与者人数**。
让我们创建一个包含这三个变量的 JSON Schema,与 Azure 建议的非常相似。
{
"properties":{
"name":{
"value":"",
"type":"string"
},
"event":{
"value":"",
"type":"string"
},
"participants":{
"value":"",
"type":"integer"
}
},
"type":"object"
}
现在您应该有类似这样的内容。
好的,下一步。
现在我们需要在 SharePoint Online 中使用这些变量添加一个新的列表项。
假设我们已经创建了 SharePoint 列表。单击 **新建步骤 > 添加操作 > SharePoint - 创建项。**
用您的帐户登录,找到您的站点并选择列表。
您的列表列将出现,现在我们可以将将在上一步中收到的值添加到这些列中。
查找左上角的 **代码视图** 按钮并单击它。
您将看到一个与您的工作流匹配的 JSON,在 `actions` 键内,您将找到一个名为 `"Create_item"` 的键。此键是您创建新 SharePoint 列表项的操作。
找到与我们之前创建的变量匹配的键。
"inputs": {
"body": {
"Event": "",
"Number_x0020_of_x0020_participan": ,
"Name": ""
}
}
要使用通过我们的请求收到的值,请使用此语法。
"Event": "@{triggerBody()?['properties']['event']['value']}"
使用 `@{triggerBody()?}` 来访问上一步中创建的 JSON,然后导航到您的结构以查找变量。
对于姓名,`var` 的值可以通过 **properties > name > value** 访问,因此语法将是 `@{triggerBody()?['properties']['name']['value']}`。
为所有三个变量执行此操作,我们得到类似这样的内容。
返回到设计器视图,单击 **设计器**,现在可以看到工作流已将这些值识别为来自请求的内容。
就是这样,我们的 Logic App 已准备就绪。:) 只需单击 **保存** 即可完成编辑。
保存后,只需返回设计器并展开 **请求** 触发器,**复制 URL**,我们就可以继续了。
创建 Web 应用程序和 Logic App 之间的连接
我将不演示如何为我们的示例创建表单或 Web 项目,您可以在其他文章中找到如何执行此操作,但我将展示我们可以用来将这些请求发送到我们的请求 URL 的代码。
我们的表单应触发一个函数来发送请求,然后触发工作流。
在 C# 中,您可以这样做,首先粘贴我们的 JSON Schema 作为类(**编辑菜单 > 特殊粘贴 > 粘贴 JSON 作为类**)。您应该看到类似这样的内容。
public class Rootobject
{
public Properties properties { get; set; }
public string type { get; set; }
}
public class Properties
{
public Name name { get; set; }
public Event _event { get; set; }
public Participants participants { get; set; }
}
public class Name
{
public string value { get; set; }
public string type { get; set; }
}
public class Event
{
public string value { get; set; }
public string type { get; set; }
}
public class Participants
{
public int value { get; set; }
public string type { get; set; }1
}
然后,使用 `System.Net.Http` **并下载 NuGet 包** `Newtonsoft.Json`,使用以下代码创建对象,然后使用 `JsonConvert.SerializeObject()` **函数** 将对象转换为 JSON **字符串**。
使用 `HttpClient` **,我们可以向我们的 URL 发送请求,然后触发 Azure Logic App。**
static void postHttp()
{
var json = new Rootobject();
json.properties = new Properties();
json.properties.name = new Name();
json.properties.name.value = "Your Name";
json.properties.name.type = "string";
json.properties._event = new Event();
json.properties._event.value = "Your Event";
json.properties._event.type = "string";
json.properties.participants = new Participants();
json.properties.participants.value = 2;
json.properties.participants.type = "integer";
string jsonStr = JsonConvert.SerializeObject(json);
using (var client = new HttpClient())
{
var content = new StringContent(jsonStr, Encoding.UTF8, "application/json");
var response = client.PostAsync("Your Request URL", content).Result;
}
}
就是这样,现在我们知道如何直接从我们的应用程序触发 Azure Logic Apps。:)
后续步骤/结尾
在本文中,我们使用了非常简单的 Logic Apps 工作流。
尝试添加条件并连接更多服务,以了解 Logic Apps 的真正强大之处。
如果您喜欢 Azure Logic Apps 的概念,您应该看看 Microsoft Flow,这是一个非常类似的服务,不需要 Azure 订阅,直接与 Office 365 帐户配合使用。
感谢您花时间阅读本文。如有任何疑问或更正,请给我留言。