В Azure Функции, как использовать параметр маршрута внутри выходной привязки - PullRequest
1 голос
/ 23 апреля 2020

Ниже приведена функция, запускаемая по протоколу http. Для маршрута я указал переменную user. Теперь я хочу, чтобы эта переменная user использовалась в любой другой выходной привязке. Теперь работает код, показанный с Blob в качестве выходной привязки.

[FunctionName(nameof(Greeting))]
public static IActionResult Run(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = "{user}/greeting")] HttpRequest req,
string user,
[Blob("{user}", Connection = "MyStorageAccount")] CloudBlockBlob blob)
    => new OkResult();

NB На самом деле я не заинтересован в создании большого двоичного объекта. Просто интересует синтаксис, который работает.

Редактировать: Просто осознавая, что это работает отлично.

1 Ответ

0 голосов
/ 23 апреля 2020

Да, вне курса.

Посмотрите на эту структуру:

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;

namespace FunctionApp32
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "GetName/{name}")] HttpRequest req,
            string name,
            [Blob("sample-images-sm/{name}", FileAccess.Write)] Stream imageSmall,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            //string name = req.Query["name"];

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

            string responseMessage = string.IsNullOrEmpty(name)
                ? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."
                : $"Hello, {name}. This HTTP triggered function executed successfully.";

            return new OkObjectResult(responseMessage);
        }
    }
}

Если написано так, локально, если вы отправляете сообщение типа http://localhost:7071/api/GetName/Bowman, тогда строка имя будет Bowman, а функция создаст контейнер с именем sample-images-sm и файл Bowman под этим контейнером.

Это официальный файл * c:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob-output?tabs=csharp

...