Я просмотрел исходный код HttpTrigger и обнаружил, что мне просто нужно добавить некоторые значения по умолчанию в свойства аннотации.
package com.microsoft.azure.functions.annotation;
import com.microsoft.azure.functions.HttpMethod;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.PARAMETER})
public @interface HttpTrigger {
String name();
String dataType() default "";
String route() default "";
HttpMethod[] methods() default {};
AuthorizationLevel authLevel() default AuthorizationLevel.FUNCTION;
}
Создайте новую аннотацию.
import com.microsoft.azure.functions.HttpMethod;
import com.microsoft.azure.functions.annotation.AuthorizationLevel;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.PARAMETER})
public @interface CreateHttpTrigger {
String name() default "req";
String dataType() default "";
String route() default "/api/mypath";
HttpMethod[] methods() default {};
AuthorizationLevel authLevel() default AuthorizationLevel.ANONYMOUS;
}
Код можно переписать следующим образом.
@FunctionName("HttpTrigger-Java")
public HttpResponseMessage run(
@CreateHttpTrigger(methods = {HttpMethod.GET}) HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {
Но когда я запускаю его, появляется следующее сообщение об ошибке:
Функция 'HttpTrigger- Java' - в ошибке: должна быть объявлена хотя бы одна привязка.
Я пробовал несколько методов, но ни один из них не помог успешно, поэтому я проверил официальную документацию по привязке и запуску.
введите описание изображения здесь
Из приведенной выше таблицы я делаю вывод, что пользовательская аннотация CreateHttpTrigger
является привязкой, которая не поддерживается функцией Azure.
Таким образом, я полагаю, что ваша идея не может быть реализованным. Если у вас есть идеи получше, вы можете мне сказать. Готов продолжить обсуждение этого вопроса.