如何将 HttpTrigger 连接到 Designer
How to wire up an HttpTrigger to the Designer
我是 Azure Functions 的新手。
我正在尝试编写一个 Http 触发器,它不仅 "fail" 不好 json (与我的模式不匹配,我想向调用者提供有关 [=44 的无效消息的反馈=] 他们提交了。
好的,所以我首先提到了 VS2017。
然后我把它编码了。我可以使用 PostMan 来测试它,它在 PostMan 测试期间工作正常。
using System;
using System.Linq;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
////using MyExceptionLibrary;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Schema;
namespace MyNamespace.AzureFunctionsOne
{
public static class MyFirstHttpTrigger
{
[FunctionName("MyFirstHttpTriggerFunctionName")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function MyFirstHttpTriggerFunctionName about to process a request.");
try
{
string jsonSchemaText = @"{
'description': 'A person',
'type': 'object',
'properties':
{
'name': {'type':'string'},
'hobbies': {
'type': 'array',
'items': {'type':'string'}
}
}
}";
JSchema schema = JSchema.Parse(jsonSchemaText);
var content = req.Content;
string jsonContent = content.ReadAsStringAsync().Result;
JObject jobj = JObject.Parse(jsonContent);
IList<string> messages;
bool valid = jobj.IsValid(schema, out messages);
if (!valid)
{
string errorMsg = string.Join(",", messages);
throw new ArgumentOutOfRangeException(string.Format("Bad Json. ({0})", errorMsg));
}
}
catch (Exception ex)
{
string errorMsg = ex.Message; //// ExceptionHelper.GenerateFullFlatMessage(ex);
log.Error(errorMsg);
return req.CreateResponse(HttpStatusCode.BadRequest, errorMsg);
}
log.Info("C# HTTP trigger function MyFirstHttpTriggerFunctionName processed a request.");
return req.CreateResponse(HttpStatusCode.OK);
}
}
}
然后我"published"把这个天蓝色的函数传到云端
我现在的问题是........如何将其连接到逻辑应用程序设计器中作为触发器?
在下面,我可以添加通用请求触发器。
在下面,我还寻找了我发布的 ~my~ azure http 触发器,但没有找到。
所以我不知道如何让我的自定义 Http-Trigger 在逻辑应用程序设计器中可用,以便它可以成为入口点触发器。
我是不是漏掉了一些基本概念?
我的结局是:
我希望第三方 POST 一些 json 作为 http 请求发送到我的 azure-logic-app。那应该是导火索。但我只希望触发器在提交有效 json 时保留 运行。 (我知道这可以通过通用请求触发器来完成)。我的警告(以及我的自定义 http 触发器)是我希望第三方获得架构违规消息,以便他们知道他们做错了什么。
如果我理解正确,你有一个工作流,你希望第 3 方通过 HTTP 请求调用,当请求正文格式不正确时,你想 return 一个友好的错误。
因此,您编写了一个 Azure 函数,将自身公开为请求端点,并进行了验证。
如果是这种情况,您只需要在验证成功后让Azure Function 调用逻辑应用程序,并将原始负载传递给逻辑应用程序。因此,您可以使用请求触发器创建逻辑应用程序,保存并获取 Url,然后调用 Url.
的函数
我是 Azure Functions 的新手。 我正在尝试编写一个 Http 触发器,它不仅 "fail" 不好 json (与我的模式不匹配,我想向调用者提供有关 [=44 的无效消息的反馈=] 他们提交了。
好的,所以我首先提到了 VS2017。
然后我把它编码了。我可以使用 PostMan 来测试它,它在 PostMan 测试期间工作正常。
using System;
using System.Linq;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
////using MyExceptionLibrary;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Schema;
namespace MyNamespace.AzureFunctionsOne
{
public static class MyFirstHttpTrigger
{
[FunctionName("MyFirstHttpTriggerFunctionName")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function MyFirstHttpTriggerFunctionName about to process a request.");
try
{
string jsonSchemaText = @"{
'description': 'A person',
'type': 'object',
'properties':
{
'name': {'type':'string'},
'hobbies': {
'type': 'array',
'items': {'type':'string'}
}
}
}";
JSchema schema = JSchema.Parse(jsonSchemaText);
var content = req.Content;
string jsonContent = content.ReadAsStringAsync().Result;
JObject jobj = JObject.Parse(jsonContent);
IList<string> messages;
bool valid = jobj.IsValid(schema, out messages);
if (!valid)
{
string errorMsg = string.Join(",", messages);
throw new ArgumentOutOfRangeException(string.Format("Bad Json. ({0})", errorMsg));
}
}
catch (Exception ex)
{
string errorMsg = ex.Message; //// ExceptionHelper.GenerateFullFlatMessage(ex);
log.Error(errorMsg);
return req.CreateResponse(HttpStatusCode.BadRequest, errorMsg);
}
log.Info("C# HTTP trigger function MyFirstHttpTriggerFunctionName processed a request.");
return req.CreateResponse(HttpStatusCode.OK);
}
}
}
然后我"published"把这个天蓝色的函数传到云端
我现在的问题是........如何将其连接到逻辑应用程序设计器中作为触发器?
在下面,我可以添加通用请求触发器。
在下面,我还寻找了我发布的 ~my~ azure http 触发器,但没有找到。
所以我不知道如何让我的自定义 Http-Trigger 在逻辑应用程序设计器中可用,以便它可以成为入口点触发器。
我是不是漏掉了一些基本概念?
我的结局是:
我希望第三方 POST 一些 json 作为 http 请求发送到我的 azure-logic-app。那应该是导火索。但我只希望触发器在提交有效 json 时保留 运行。 (我知道这可以通过通用请求触发器来完成)。我的警告(以及我的自定义 http 触发器)是我希望第三方获得架构违规消息,以便他们知道他们做错了什么。
如果我理解正确,你有一个工作流,你希望第 3 方通过 HTTP 请求调用,当请求正文格式不正确时,你想 return 一个友好的错误。
因此,您编写了一个 Azure 函数,将自身公开为请求端点,并进行了验证。
如果是这种情况,您只需要在验证成功后让Azure Function 调用逻辑应用程序,并将原始负载传递给逻辑应用程序。因此,您可以使用请求触发器创建逻辑应用程序,保存并获取 Url,然后调用 Url.
的函数