Как передать параметры с помощью POST в функции Azure 2 - PullRequest
1 голос
/ 31 мая 2019

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

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

Ответ в приведенной выше ссылке await req.Content.ReadAsAsync<>(); Я ищу аналогичный ответ для функции Azure 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 = .............;
        }

Ответы [ 2 ]

4 голосов
/ 02 июня 2019

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

Класс пользовательских запросов:

public class Users
    {

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

    }

Функция Azure V2:

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

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": "kiron@email.com"
}

Тест PostMan:

enter image description here

Примечание: Вы ищете await req.Content.ReadAsAsync<>();, это действительно необходимо для отправки запроса POST от вашей функции.И читать с этого сервера ответы.Но помните, что req.Content не поддерживается как запрос на чтение в Azure Function V2, который показал Function V1 пример здесь

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

См. Фрагмент кода ниже:

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

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

2 голосов
/ 31 мая 2019
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 из запроса на отправку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...