Как функции Azure / расширения WebJobs регистрируют конечную точку http? - PullRequest
0 голосов
/ 04 июня 2019

Рассматривая расширение инфраструктуры долговременных задач для функций Azure, оно создает некоторые конечные точки управления на runtime/webhooks/durabletasks/instances

И я пришел к выводу, что это код, который обрабатывает эти запросы: https://github.com/Azure/azure-functions-durable-extension/blob/bf9a9b29fccae849840686459175b7d8ae619f67/src/WebJobs.Extensions.DurableTask/HttpApiHandler.cs#L21

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

1 Ответ

1 голос
/ 05 июня 2019

Существует два ключевых компонента для регистрации конечных точек для расширения функций Azure.

  1. Вызов context.GetWebhookHandler() как найдено здесь .
  2. Расширение должно реализовывать IAsyncConverter<HttpRequestMessage, HttpResponseMessage> как найдено здесь .

Когда оба эти условия выполнены, среда выполнения функций переадресует все запросы в пространстве имен API runtime/webhooks/<extension-name>* на реализацию IAsyncConverter<HttpRequestMessage, HttpResponseMessage>. Если вы посмотрите в качестве основы Durable Task в качестве примера, HttpApiHandler затем рассмотрит путь и методы этих запросов, чтобы направить запросы к соответствующим методам API.

Невозможно зарегистрировать конечные точки за пределами пространства имен runtime/webhooks/<extension-name>*. Однако вы можете создать столько конечных точек в этом пространстве имен, сколько захотите. Вы, как разработчик расширения, несете ответственность за маршрутизацию этих HttpRequestMessage объектов в логику API для этой конечной точки.

...