Как подключить HttpTrigger к конструктору


Я новичок в функциях Azure. Я пытаюсь написать триггер Http, который не только "провалит" плохой json (что не соответствует моей схеме, я хочу предоставить обратную связь вызывающему объекту с недопустимыми сообщениями о JSON, которые они отправили.

Итак, сначала я поднял VS2017.

Введите описание изображения здесь

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

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);
        }
    }
}

Затем я "опубликовал" эту функцию azure в облаке.

Мой вопрос стоит сейчас........как передать это в конструктор приложений логики, чтобы он стал триггером?

Ниже я могу добавить триггер generic-request-trigger.

Введите описание изображения здесь

Ниже я также искал~ my ~ azure http trigger, который я опубликовал, и не повезло.

Введите описание изображения здесь

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

Я пропустил некоторые основные концепция?

Моя конечная игра:

Я хочу, чтобы сторонний пользователь отправил некоторый json в мое приложение azure-logic в качестве http-запроса. Это должно быть спусковым крючком. Но я хочу, чтобы триггер продолжал работать, только если они отправят действительный json. (Я знаю, что это можно сделать с помощью триггера generic request). Мое предостережение (и, следовательно, мой пользовательский http-триггер) заключается в том, что я хочу, чтобы сторонние пользователи получали сообщения о нарушении схемы, чтобы они знали, что они сделали неправильно.

1 2

1 ответ:

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

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

В этом случае вам просто потребуется функция Azure для вызова приложения Logic после успешной проверки и передачи исходных данных в приложение Logic. Таким образом, Вы можете создать логику Приложение с триггером запроса, сохранить и получить Url-адрес, и есть функция вызова этого Url-адреса.