Модель привязки параметров функции для HTTP-запроса с помощью C # в функции Azure 2.x

#c# #azure #asp.net-core #azure-functions

#c# #azure #asp.net-core #azure-функции

Вопрос:

Ниже приведены функции Azure через C # с Visual studio. Проблема в том, что req.Form используется для создания RequestDto объекта, подобного приведенному ниже:

  public class Function1
{   
    [FunctionName("Token")]
    public async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
    HttpRequest req)
    {

        var reqDto = new RequestDto
        {
            UserName = req.Form["username"],
            Password = req.Form["password"],
            ClientId = req.Form["client_id"],
            ClientSecret = req.Form["client_secret"]                
        };
       ...

      }
    }
  

Возможно ли использовать привязку модели, которая RequestDto автоматически заполняется ASP.NET ЯДРО 2.x, как показано ниже?

 [Route("api/[controller]")]
[ApiController]
public class ConnectController : Controller
{
    [HttpPost("token")]
    [Consumes("application/x-www-form-urlencoded")]
    public async Task<IActionResult> Token([FromForm]RequestDto request)
    {
         ...
    }
 }

  public class RequestDto
  {
    [FromForm(Name="client_id")]
    public string ClientId { get; set; }

    [FromForm(Name = "client_secret")]
    public string ClientSecret { get; set; }
    public string UserName { get; set; }
    public string Password { get; set; }
}
  

Комментарии:

1. Чего вы хотите достичь? Есть ли какие-либо проблемы с вызовом Token ? Поделитесь с нами дополнительной информацией о вашей проблеме.

2. Я хочу, чтобы запрос был автоматически заполнен, как во втором примере, при использовании ASP.NET ЯДРО.

3. Как вы будете запрашивать действие токена?

4. это не имеет отношения к теме

5. Что касается привязки, то она состоит из двух связанных частей: параметра действия и запроса клиента. Без информации, связанной с запросом клиента, как мы можем поделиться тем, как привязать модель?

Ответ №1:

Я думаю, что то, что вы ищете, — это пользовательская привязка или вызываемое Microsoft: Azure Functions / WebJobs binding extension. Как это сделать, объясняется здесь: https://github.com/Azure/WebJobsExtensionSamples

Комментарии:

1. Таким образом, для этого нет встроенной поддержки.

2. Насколько мне известно, нет.