Azure API Management/Portal:在 API 门户中为 "Try Out" 激活模拟

Azure API Management/Portal: activate Mocking for "Try Out" in API Portal

我想知道是否有可能从 API 门户激活对基于 API 的 Azure API 管理的调用的模拟。

我不希望浏览界面目录并使用“试用”功能的开发人员实际 CRUD 记录 from/in 后端。他们应该只接收一组预定义的数据,这样他们就可以根据它进行开发,而不会弄乱后端的数据。

例子

API 在 Azure 上创建 API 管理和生产。 此 API 列在相应的 Azure API 门户中 - 开发人员现在发现 API 并想尝试一下:

POST /SalesQuote 将在 SAP 中创建销售报价单。开发人员使用开发人员门户中的“试用”按钮来查看行为。 “发送”按钮现在实际上在后端创建了一条记录。

这可以预防吗?如果是这样 - 怎么样?这是否可以在 API 政策中实现(即起源的模拟数据 = api 门户 url)?

我能想到的唯一其他选择是禁用试一试功能——这是一个糟糕的解决方案。

编辑:一般的“启用模拟”当然是为了提高效率 API 别无选择。

感谢您的帮助!

是的,你可以,你必须在 API 的出站中添加一个策略,通常我用它来公开开发过程中的 api。

转到此 link 的“启用响应模拟”部分: https://docs.microsoft.com/en-us/azure/api-management/mock-api-responses

感谢 Nacho,我更深入地研究了策略功能并进行了一些尝试。我想出了以下内容:

<inbound>
  <base />
  <choose>
    <when condition="@(context.User.Groups.Any(Group => Group.Name == "developer-internal"))">
      <mock-response status-code="201" content-type="application/json" />
    </when>
  </choose>
</inbound>

仅当调用用户是组“developer-internal”(通过 AAD 映射都是开发人员门户用户)的成员时,才应启用模拟。

作为替代方案,我正在验证我们测试后端的 re-routing 选项,而不是模拟如下所示的响应:

<inbound>
    <base />
    <choose>
        <when condition="@(context.User.Groups.Any(Group => Group.Name == "developer-internal"))">
            <!--mock-response status-code="201" content-type="application/json" /-->
            <set-backend-service base-url="https://esb-test.example.com/restv2/CostObject" />
        </when>
    </choose>
</inbound>