Как передать параметры с помощью POST в Azure Functions 2

Я хочу передать параметры типу HttpTrigger в функции Azure 2. Я вижу ответ для функции Azure 1 в приведенной ниже ссылке.

Как передать параметры по POST в функцию Azure?

Ответ по ссылке выше await req.Content.ReadAsAsync<>(); Я ищу аналогичный ответ для Azure Function 2.

Здесь мы используем класс HttpRequest вместо класса HttpRequestMessage.

Ниже приведен код.

public async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");
            string data = .............;
        }
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
6 453
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий
public static async void Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)]
            HttpRequest req,
            ILogger log)
        {
            var content = await new StreamReader(req.Body).ReadToEndAsync();

            MyClass myClass = JsonConvert.DeserializeObject<MyClass>(content);

        }

У вас может быть собственный класс, который можно отправить в виде JSON из почтового запроса.

Похоже, вы пытаетесь отправить POST запрос на Azure Function V2. См. приведенный ниже фрагмент кода.

Пользовательский класс запроса:

public class Users
    {

        public string Name { get; set; }
        public string Email { get; set; }

    }

Функция Azure версии 2:

В этом примере я беру два параметра, используя пользовательский класс, и возвращаю эти два свойства класса в качестве ответа.

public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            //Read Request Body
            var content = await new StreamReader(req.Body).ReadToEndAsync();

            //Extract Request Body and Parse To Class
            Users objUsers = JsonConvert.DeserializeObject<Users>(content);

            //As we have to return IAction Type So converting to IAction Class Using OkObjectResult We Even Can Use OkResult
            var result = new OkObjectResult(objUsers);
            return (IActionResult)result;
        }

Образец запроса:

{
   "Name": "Kiron" ,
   "Email": "[email protected]"
}

Почтовый тест:

Note: You are looking for await req.Content.ReadAsAsync<>(); this actually needed for sending a POST request from your function. And Read from that server responses. But remember that req.Content is not supported as reading post request in Azure Function V2 which have shown Function V1 example here

Другой пример:

См. приведенный ниже фрагмент кода:

public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            //Read Request Body
            var content = await new StreamReader(req.Body).ReadToEndAsync();

            //Extract Request Body and Parse To Class
            Users objUsers = JsonConvert.DeserializeObject<Users>(content);

            //Post Reuqest to another API 
            HttpClient client = new HttpClient();
            var json = JsonConvert.SerializeObject(objUsers);
            //Parsing json to post request content
            var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
            //Posting data to remote API
            HttpResponseMessage responseFromApi = await client.PostAsync("YourRequstURL", stringContent);

            //Variable for next use to bind remote API response
            var remoteApiResponse = "";
            if (responseFromApi.IsSuccessStatusCode)
            {
               remoteApiResponse = responseFromApi.Content.ReadAsStringAsync().Result; // According to your sample, When you read from server response
            }

            //As we have to return IAction Type So converting to IAction Class Using OkObjectResult We Even Can Use OkResult
            var result = new OkObjectResult(remoteApiResponse);
            return (IActionResult)result;
        }

Надеюсь, вы понимаете, если у вас все еще есть какие-либо вопросы, не стесняйтесь поделиться. Спасибо и удачного кодирования!

какая-либо польза от использования пользовательского DTO для простого dynamic, такого как JObject?

Alex Gordon 03.06.2019 19:29

@l--''''''---------''''''''''''' Насколько я знаю, вы также можете использовать dynamic, поскольку он безопасен для типов, но если вы уже знаете, какие данные лучше использовать вместо этого. Когда мы используем динамический компилятор, необходимо искать каждый тип данных, что немного дорого.

Md Farid Uddin Kiron 03.06.2019 21:34

Сначала создайте проект функции Azure (или добавьте его в свое решение) на основе запроса HTTP. вызывать. В отдельном классе созданного проекта вы можете увидеть пример. Вы передали JSON из тела запроса:

{"name":"John"}

и просто преобразуйте его в переменную в вашем коде:

 public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
        ILogger log)
    {
        log.LogInformation("C# HTTP trigger function processed a request.");

       

        string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
        dynamic data = JsonConvert.DeserializeObject(requestBody);
        string name = data.name;
        ...

Другие вопросы по теме