Функции Azure с несколькими конечными точками (Java) - PullRequest
0 голосов
/ 17 декабря 2018

Я вижу здесь пример java для функций Azure:

/**
 * Azure Functions with HTTP Trigger.
 */
public class Function {
    @FunctionName("HttpTrigger-Java")
    public HttpResponseMessage<String> httpHandler(
            @HttpTrigger(name = "req", methods = {"get", "post"}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
            final ExecutionContext context
    ) {
        context.getLogger().info("Java HTTP trigger processed a request.");

        String query = request.getQueryParameters().get("name");
        String name = request.getBody().orElse(query);

        if (name == null) {
            return request.createResponse(400, "Please pass a name on the query string or in the request body");
        } else {
            return request.createResponse(200, "Hello, " + name);
        }
    }
}

В примере представлена ​​только одна конечная точка, я понимаю, что можно использовать функции Azure для создания нескольких конечных точек, например: /имя (которое выполняет определенный метод) и другую конечную точку / идентификатор, который выполняет другой метод.

как мне этого добиться?

Какова лучшая практика, я понимаю, что я должен использоватьbind аннотации функции Azure, как она используется?

1 Ответ

0 голосов
/ 18 декабря 2018

Используйте route свойство HttpTrigger и свяжите его значение с параметром route в сигнатуре метода.Затем мы можем определить ответ в соответствии с входящим маршрутом.

@FunctionName("HttpTrigger-Java")
public HttpResponseMessage run(
        @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, route="{customRoute}", authLevel = AuthorizationLevel.FUNCTION) HttpRequestMessage<Optional<String>> request,
        @BindingName("customRoute")String route,
        final ExecutionContext context) {
    context.getLogger().info("Java HTTP trigger processed a request.");

    if(route.equals("home")){
        return request.createResponseBuilder(HttpStatus.OK).body("Home route request").build();
    }
    else if(route.equals("id")){
        return request.createResponseBuilder(HttpStatus.OK).body("Id route request").build();
    }
    else{
        return request.createResponseBuilder(HttpStatus.NOT_FOUND).body("Not a valid route").build();
    }
}

Кроме того, URL-адрес функции в этом формате по умолчанию host/api/{customRoute}.Чтобы удалить префикс api, установите routePrefix на пустое значение в host.json.

{
  "version": "2.0",
  "extensions": {
    "http":{
      "routePrefix":""
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...