问题描述
我想知道是否有可能激活从API门户对基于Azure API管理的API的调用的模拟功能。
我不希望开发人员浏览界面目录并使用“尝试”功能来实际从后端CRUD记录。他们应该只接收一组预定义的数据,以便可以针对它进行开发而不会弄乱后端中的数据。
示例
API是在Azure API管理上创建的,具有生产力。
此API在相应的Azure API门户中列出-
开发人员现在找到该API并想尝试一下:
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