如何将HttpTrigger连接到Designer

时间:2017-08-11 15:03:16

标签: azure azure-functions azure-logic-apps

我是Azure Functions的新手。 我试图编写一个Http Trigger,它不仅会失败,而且还会#34;糟糕的json(与我的架构不匹配,我想向调用者提供有关他们提交的json的无效消息的反馈。

好的,首先我提出了VS2017。

enter image description here

然后我把它编码了。我可以使用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);
        }
    }
}

然后我发布了&#34;这个天蓝色的功能到了云端。

我现在的问题是........如何将其连接到Logic App Designer作为触发器?

在下面,我可以添加generic-request-trigger。

enter image description here

在下面,我也查找了我发布的〜我的〜azure http触发器,但没有运气。

enter image description here

因此,我无法弄清楚如何让我的自定义Http-Trigger在Logic App设计器中可用,因此它可以作为入口点触发器。

我错过了一些基本概念吗?

我的最终游戏是:

我希望第三方将一些json作为http请求发布到我的azure-logic-app。这应该是触发器。但是我只希望触发器在提交有效的json时继续运行。 (我知道这可以通过通用请求触发器完成)。我的警告(以及我的自定义http触发器)是我希望第三方获取架构违规消息,以便他们知道他们做错了什么。

0 个答案:

没有答案