#swagger #openapi #azure-api-management
Вопрос:
У меня есть API, настроенный в управлении API azure. Он был настроен с использованием OpenAPI, так как у нас есть документация swagger для API. Теперь я хочу отправить этот API внешним клиентам и предоставить им страницу документации для просмотра того, как использовать API. Так как же мне разоблачить чванство index.html страница во внешний мир и не требует ключа подписки для ее просмотра?
Я попытался добавить новую конечную точку API /swagger и добавил следующее при входящей обработке :
<set-backend-service base-url="https://myapi.azurewebsites.net" />
<rewrite-uri template="/index.html" />
Но я получаю обратно чистую страницу. Похоже, что CSS и JS-это 404:
Комментарии:
1. Если я добавлю uri перезаписи как /swagger/v1/swagger.json, я смогу просмотреть документацию по JSON, но не смогу просмотреть HTML-страницу по вышеуказанным причинам.
2. Если мы не можем найти решение для перенаправления веб-страницы, мы можем использовать портал разработчика azure apim . Azure apim предоставляет портал разработчика, на котором пользователи могут просматривать все опубликованные API, а также подробную информацию об этих API.
Ответ №1:
У меня есть идея, которая могла бы стать для вас вариантом.
У меня есть служба, вызов https://f0xxx2bc.ngrok.io/view
которой приведет к получению html-кода в браузере. Если я добавлю конечную точку в apim, чтобы установить ее подключение к URL моей веб-страницы, она может отображать содержимое, но файл css потерян(ошибка 404, как у вас). Согласно сообщению об ошибке, мы можем найти его результаты по URL-адресу ошибки, другими словами, мы не можем посетить файл css напрямую через экземпляр apim. Таким образом, мы можем использовать только URL-адрес сервера html-страницы.
Моя идея в этой проблеме состоит в том, чтобы перенаправить конечную точку на мой URL-адрес. Но, похоже, нет никакой разницы в том, чтобы предоставлять этот URL-адрес пользователям. Поэтому я предпочитаю предложить вам использовать портал разработчиков apim, его можно рассматривать как официальный инструмент для отображения всех подробностей об использовании api.
После создания новой конечной точки мы можем установить для нее политику входящих сообщений и перенаправить ее на вашу веб-страницу, используя URL-адрес html в вашей внутренней службе. Но это сделает ваш внутренний URL-адрес доступным в браузере.
Вот моя политика тестирования, и после ее настройки, когда я посещаю конечную точку api, она может перенаправлять на мою html-страницу, и файл css, безусловно, работает.
<inbound>
<base />
<choose>
<when condition="true">
<return-response>
<set-status code="303" reason="reason" />
<set-header name="Location" exists-action="override">
<value>@("https://fxxxxdc2bc.ngrok.io/view")</value>
</set-header>
</return-response>
</when>
</choose>
</inbound>