Azure API管理/门户:在API门户中激活“试用”的模拟功能

问题描述

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

我不希望开发人员浏览界面目录并使用“尝试”功能来实际从后端CRUD记录。他们应该只接收一组预定义的数据,以便可以针对它进行开发而不会弄乱后端中的数据。

示例

API是在Azure API管理上创建的,具有生产力。 此API在相应的Azure API门户中列出- 开发人员现在找到该API并想尝试一下:

enter image description here

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

可以防止这种情况发生吗?如果是这样-如何?这会在API政策中实现(例如,原始数据的模拟数据= API门户网址)吗?

我能想到的唯一其他选择是禁用try it功能-相当糟糕的解决方案。

编辑:一般来说,“模拟启用”对于生产性API毫无选择。

感谢您的帮助!

解决方法

感谢纳乔(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映射都是开发人员门户用户),才应该启用模拟。

作为替代方案,我正在验证测试后端的重新路由选项,而不是模拟如下所示的响应:

<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>
,

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

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