【问题标题】:Expose documentation with azure API management使用 azure API 管理公开文档
【发布时间】:2021-06-07 15:15:56
【问题描述】:

我有一个在 Azure API 管理中设置的 API。它是使用 OpenAPI 设置的,因为我们有该 API 的 swagger 文档。 我现在想将此 API 发送给外部客户端,并给他们一个文档页面以查看如何使用该 API。 那么如何将swagger index.html页面暴露给外界,并且不需要订阅密钥就可以查看呢?

我尝试添加一个新的 API 端点 /swagger,并在入站处理中添加了以下内容:

    <set-backend-service base-url="https://myapi.azurewebsites.net" />
    <rewrite-uri template="/index.html" />

但我得到一个空白页。看起来 CSS 和 JS 是 404:

【问题讨论】:

  • 如果我将 rewrite-uri 添加为 /swagger/v1/swagger.json 我可以看到 JSON 文档,但由于上述原因我无法查看 HTML 页面。
  • 如果找不到重定向网页的解决方案,我们可以使用 azure apim developer portal。 Azure apim 为用户提供了一个开发者门户,可以查看所有已发布的 API,以及这些 API 的详细信息。

标签: swagger openapi azure-api-management


【解决方案1】:

我有一个想法可以作为你的选择。

我有一个调用https://f0xxx2bc.ngrok.io/view 的服务将在浏览器中获得一个html。如果我在 apim 中添加一个端点以将其设置为连接到我的网页 url,它可以显示内容但 css 文件丢失(像你的 404 错误)。根据报错信息,我们可以发现是报错url导致的,也就是说我们不能直接通过apim实例访问css文件。所以我们只能使用html页面的server url。

我对这个问题的想法是让端点重定向到我的网址。但是将这个 url 暴露给用户似乎没有什么区别。所以我更推荐大家使用apim开发者门户,可以考虑起到官方工具的作用,展示所有使用api的细节。

创建新端点后,我们可以为其设置入站策略,并使用后端服务中的 html url 将其重定向到您的网页。但这会让你的后端 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>

【讨论】:

    【解决方案2】:

    感谢所有帮助的人。我不知何故不知道开发人员门户是一回事! 我现在只是在玩弄那个设置,太棒了!正是我 需要。

    对于那些像我一样找不到它的人,它在这里:

    谢谢!

    【讨论】:

      猜你喜欢
      • 2020-12-13
      • 2018-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-27
      • 1970-01-01
      • 2020-03-13
      相关资源
      最近更新 更多