Настройка конечной точки HTTP в Функциях Azure
В этой статье вы узнаете, как создавать высокомасштабируемые API с помощью Функции Azure путем настройки триггера HTTP для обработки определенных действий в проектировании API. Функции Azure включает в себя коллекцию встроенных триггеров и привязок HTTP, что упрощает создание конечной точки на различных языках, включая Node.js, C#и многое другое. Вы также готовитесь к росту API, интегрируя его с Функции Azure прокси-серверами и настройкой макетных API. Так как эти задачи выполняются поверх бессерверной вычислительной среды функций, вам не нужно беспокоиться о масштабировании ресурсов. Вместо этого вы можете просто сосредоточиться на логике API.
Внимание
Функции Azure прокси-серверы — это устаревшая функция для версий 1.x до 3.x среды выполнения Функции Azure. Поддержка прокси-серверов может быть повторно включена в версии 4.x для успешного обновления приложений-функций до последней версии среды выполнения. Как можно скорее необходимо перейти на интеграцию приложений-функций с Azure Управление API. Управление API позволяет воспользоваться преимуществами более полного набора функций для определения, защиты, администрации и монетизации API на основе Функций. Дополнительные сведения см. в разделе Управление API интеграции.
Сведения о том, как повторно включить поддержку прокси-серверов в Функциях версии 4.x, см. в статье "Повторное включение прокси-серверов" в Функциях версии 4.x.
Необходимые компоненты
- Средство тестирования HTTP, которое обеспечивает безопасность данных. Дополнительные сведения см. в средствах тестирования HTTP.
В этой статье в качестве отправной точки используются ресурсы, созданные при создании первой функции в портал Azure. Выполните шаги в этой статье для создания приложения-функции, если вы еще не сделали этого.
После создания этого приложения-функции вы можете выполнить действия, описанные в этой статье.
Вход в Azure
Войдите на портал Azure с помощью своей учетной записи Azure.
Настройка функции HTTP
По умолчанию вы настраиваете функцию триггера HTTP, чтобы принять любой метод HTTP. В этом разделе вы измените функцию, чтобы она отвечала только на запросы GET по пути /api/hello
. Вы можете использовать URL-адрес по умолчанию: https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>
Перейдите к своей функции на портале Azure. В меню слева выберите Интеграция, а затем в разделе Триггер выберите HTTP (req) (HTTP (запрос)).
Используйте настройки триггера HTTP, указанные в следующей таблице.
Поле Пример значения Description Шаблон маршрута hello Определяет пути, используемые для вызова этой функции Уровень авторизации Анонимные (Необязательно.) Предоставляет доступ к функции без ключа API Выбранные методы HTTP GET Разрешает использовать только выбранные методы HTTP для вызова этой функции Так как глобальный параметр обрабатывает
/api
префикс базового пути в шаблоне маршрута, его не нужно задать здесь.Выберите Сохранить.
Дополнительные сведения о настройке функций HTTP см. в Функции Azure обзоре триггеров и привязок HTTP.
Тестирование API
Протестируйте функцию и убедитесь, что она работает с новой контактной зоной API.
На странице "Функция" выберите "Код и тест" в меню слева.
Щелкните Получить URL функции в меню сверху и скопируйте этот URL-адрес. Убедитесь, что функция теперь использует
/api/hello
путь.Скопируйте URL-адрес на новую вкладку браузера или предпочитаемый клиент REST. Браузеры по умолчанию используют запросы GET.
Добавьте параметры в строку запроса в URL-адресе. Например,
/api/hello/?name=John
.Нажмите клавишу ВВОД, чтобы убедиться, что ваша функция работает. Вы увидите ответ "Hello John".
Вы также можете вызвать конечную точку с другим методом HTTP, чтобы убедиться, что функция не выполняется. Для методов HTTP, отличных от GET, необходимо использовать безопасное средство тестирования HTTP.
Общие сведения о прокси-серверах
В следующем разделе вы запустите API через прокси-сервер. Функции Azure прокси-серверы позволяют пересылать запросы другим ресурсам. Вы определяете конечную точку HTTP, как и триггер HTTP. Но вместо кода, который нужно выполнять при вызове конечной точки, здесь вы предоставляете URL-адрес удаленной реализации. Это позволяет создавать несколько источников API в одну область API, что упрощает использование клиентами и полезно, если вы хотите создать API как микрослужбы.
Прокси-сервер может указывать на любой ресурс HTTP, например:
- Функции Azure
- Приложения API в службе приложений Azure.
- Контейнеры Docker в службе приложений под управлением Linux.
- Любой другой размещенный API.
Дополнительные сведения о Функции Azure прокси см. в статье [Работа с устаревшими прокси-серверами].
Примечание.
Функции Azure прокси-серверы доступны в Функции Azure версиях 1.x до 3.x.
Создание первого прокси-сервера
В этом разделе вы создадите прокси-сервер, который будет играть роль интерфейса для вашего API.
Настройка интерфейсной среды
Повторите действия, описанные в разделе "Создание приложения-функции", чтобы создать новое приложение-функцию , в котором создается прокси-сервер. URL-адрес нового приложения служит интерфейсом для нашего API, а приложение-функция, которое вы ранее редактировали, служит серверной частью:
Перейдите к своему новому приложению-функции интерфейса на портале.
Разверните узел "Параметры" и выберите переменные среды.
Выберите вкладку "Параметры приложения", где хранятся пары "ключ-значение".
Нажмите кнопку +Добавить , чтобы создать новый параметр. Введите HELLO_HOST для имени и задайте для узла внутреннего приложения-функции значение, например
<YourBackendApp>.azurewebsites.net
.Это значение является частью URL-адреса, скопированного ранее при тестировании функции HTTP. Позже вы ссылаетесь на этот параметр в конфигурации.
Примечание.
Рекомендуется использовать параметры приложения для конфигурации узла, чтобы предотвратить жестко закодированную зависимость среды для прокси-сервера. Использование настроек приложения означает, что вы можете перемещать конфигурацию прокси-сервера между средами. Параметры приложения для конкретной среды будут применяться.
Нажмите кнопку "Применить" , чтобы сохранить новый параметр. На вкладке "Параметры приложения" нажмите кнопку "Применить", а затем нажмите кнопку "Подтвердить ", чтобы перезапустить приложение-функцию.
Создание прокси-сервера в интерфейсной части
Вернитесь к разделу портала для интерфейсного приложения-функции.
В меню слева разверните узел "Функции", выберите "Прокси", а затем нажмите кнопку "Добавить".
На странице "Создать прокси-сервер" используйте параметры в следующей таблице и нажмите кнопку "Создать".
Поле Пример значения Description Имя. HelloProxy Понятное имя, используемое только для управления Шаблон маршрута /api/remotehello Определяет пути, используемые для вызова этого прокси-сервера Внутренний URL-адрес https://%HELLO_HOST%/api/hello Определяет конечную точку, к которой должен быть отправлен запрос Так как Функции Azure прокси-серверы не предоставляют
/api
префикс базового пути, его необходимо включить в шаблон маршрута. Синтаксис%HELLO_HOST%
ссылается на созданный ранее параметр приложения. Разрешенный URL-адрес указывает на исходную функцию.Проверьте работу нового прокси-сервера, скопировав URL-адрес прокси-сервера и вставив его в адресную строку в браузере или в любой клиент HTTP.
- Для анонимной функции используйте:
https://YOURPROXYAPP.azurewebsites.net/api/remotehello?name="Proxies"
- Для функции с авторизацией используйте:
https://YOURPROXYAPP.azurewebsites.net/api/remotehello?code=YOURCODE&name="Proxies"
- Для анонимной функции используйте:
Создание макета API
Затем вы используете прокси-сервер для создания макетного API для решения. Этот прокси-сервер позволяет выполнять разработку клиентов, не требуя полной реализации серверной части. Позже в разработке можно создать новое приложение-функцию, поддерживающее эту логику, и перенаправить прокси-сервер на него:
Чтобы создать этот макет API, создайте новый прокси-сервер, на этот раз с помощью редактора Служба приложений. Чтобы приступить к работе, перейдите к приложению-функции в портал Azure. Выберите функции платформы и выберите редактор Служба приложений в разделе "Средства разработки".
Редактор службы приложений откроется в новой вкладке.
В области слева щелкните
proxies.json
. Этот файл содержит конфигурацию всех прокси-серверов. Если вы используете любой метод развертывания функций, этот файл хранится в системе управления версиями. Дополнительные сведения об этом файле см. в статье о расширенной конфигурации прокси-серверов.Файл proxies.json должен отображаться следующим образом:
{ "$schema": "http://json.schemastore.org/proxies", "proxies": { "HelloProxy": { "matchCondition": { "route": "/api/remotehello" }, "backendUri": "https://%HELLO_HOST%/api/hello" } } }
Добавьте макет API. Замените файл proxies.json следующим кодом:
{ "$schema": "http://json.schemastore.org/proxies", "proxies": { "HelloProxy": { "matchCondition": { "route": "/api/remotehello" }, "backendUri": "https://%HELLO_HOST%/api/hello" }, "GetUserByName" : { "matchCondition": { "methods": [ "GET" ], "route": "/api/users/{username}" }, "responseOverrides": { "response.statusCode": "200", "response.headers.Content-Type" : "application/json", "response.body": { "name": "{username}", "description": "Awesome developer and master of serverless APIs", "skills": [ "Serverless", "APIs", "Azure", "Cloud" ] } } } } }
Этот код добавляет новый прокси-сервер,
GetUserByName
который пропускаетbackendUri
свойство. Вместо вызова другого ресурса он изменяет ответ по умолчанию из Функции Azure прокси-серверов с помощью переопределения ответа. Вы также можете использовать переопределения запросов и ответов с URL-адресом серверной части. Этот метод полезен при прокси-сервере в устаревшей системе, где может потребоваться изменить заголовки, параметры запроса и т. д. Дополнительные сведения о переопределении запросов и ответов см. в разделе "Изменение запросов и ответов".Протестируйте api макета, вызвав конечную точку
<YourProxyApp>.azurewebsites.net/api/users/{username}
с помощью браузера или любимого клиента REST. Замените {username} строковым значением, представляющим имя пользователя.
Связанный контент
В этой статье вы узнали, как создать и настроить API с помощью Функции Azure. Вы также узнали, как объединить несколько API, включая макет APIS, в качестве единой поверхности API. Вы можете использовать эти методы для создания API любой сложности, работая в бессерверной вычислительной модели, предоставляемой Функциями Azure.
Дополнительные сведения о разработке API: