Azure Java Функция, Получить значение атрибута тела HttpTrigger в аннотации пути BlobOutput - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть функция HttpTrigger с телом запроса как

{
"id":"222",
"name":"some name"
}

Я хочу получить идентификатор из тела запроса в путь @BlobOuput, как показано ниже

@BlobOutput(name="blob",  path="input-blob/{body.id}")

Есть ли способ достичь этой функциональности.

1 Ответ

1 голос
/ 03 апреля 2020

Что касается чтения пути @BlobOuput из тела запроса httptrigger, обратитесь к следующим шагам.

Я использую следующее тело запроса для теста

{
"BlobName":"test.txt",
 "Content":"test"
}
  1. Создать Пользовательский класс в качестве тела запроса.
public class BlobInfo {
    public String Content;
    public String BlobName;

    public String getContent() {
        return Content;
    }

    public void setContent(String content) {
        Content = content;
    }

    public String getBlobName() {
        return BlobName;
    }

    public void setBlobName(String blobName) {
        BlobName = blobName;
    }
}
Код функции
@FunctionName("HttpExample")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<BlobInfo>> request, // request body gets automatically de-serialized into the custom object you create
            @BlobOutput(name="output",  path = "test/{BlobName}" //  use the custom object's property you need as file name
                    ,connection = "AzureWebJobsStorage") OutputBinding<String> outputItem,
            final ExecutionContext context) throws IOException {
        context.getLogger().info("Java HTTP trigger processed a request.");
        BlobInfo body = request.getBody().get();
        context.getLogger().info(body.Content);
        context.getLogger().info(body.BlobName);
        outputItem.setValue("Hello World!");

        return request.createResponseBuilder(HttpStatus.OK).body("success").build();

    }
Тест
POST <function url>
Content-Type:application/json

{
 "BlobName":"test.txt",
 "Content":"test"
}

enter image description here enter image description here

...