Стандарт именования функций Azure

#azure #spring-boot #azure-functions #azure-function-app #azure-functions-core-tools

#azure #весенняя загрузка #azure-функции #azure-функция-приложение #azure-functions-core-tools

Вопрос:

Я хочу использовать одно имя функции Azure, но для каждой функции операции http будут разными, возможно ли это?

Например —

  @FunctionName("message")
    public ResponseDTO saveMessage(
            @HttpTrigger(name = "messageReq", methods = {HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<Message>> request,
            ExecutionContext context) {
        return handleRequest(request.getBody().get(), context);
    }

@FunctionName("message")
    public ResponseDTO getMessage(
            @HttpTrigger(name = "MessageGetReq", methods = {HttpMethod.GET}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage request,
            @BindingName("to") String to, ExecutionContext context) {
        return handleRequest(to, context);
    }

@FunctionName("message")
    public ResponseDTO deleteMessage(
            @HttpTrigger(name = "MessageGetReq", methods = {HttpMethod.DELETE}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage request,
            @BindingName("id") String id, ExecutionContext context) {
        return handleRequest(id, context);
    }
  

Я пробовал то же самое, но не знаю, как обращаться с файлом компонента, поскольку @Bean name должно совпадать с именем функции, но в этом случае все имя компонента будет таким же, как «сообщение», которое выдаст ошибку, даже если мы не определяем имя компонента, оно будет совпадать с именем метода, но для этоготакже все 3 имени метода будут «message», что приведет к ошибке компиляции.

 @Bean("message")
    public Function<Message,ResponseDTO> saveMessage() {
        return message -> {
            return msgService.saveMessage(message);
        };
    }

    @Bean("message")
    public Function<String, ResponseDTO> deleteMessage() {
        return id -> msgService.getMessages1(id);
    }

    @Bean("message")
    public Function<String, ResponseDTO> getMessage() {
        return to -> msgService.getMessages1(to);
    }
  

Таким образом, я хочу иметь только одно имя функции Azure в качестве «сообщения» с помощью операции GET / POST / DELETE. Любая помощь будет оценена.

Ответ №1:

можете ли вы сделать это, указав один и тот же маршрут для каждой функции — затем имя игнорируется, поскольку оно должно проходить по маршруту, а затем определять функцию на основе действия.

например, route = /api/message