我想知道是否可以激活模拟以从 API 门户调用基于 Azure API 管理的 API。
我不希望开发人员浏览界面目录并使用“尝试”功能来实际从后端/在后端中进行 CRUD 记录。他们应该只接收一组预定义的数据,以便他们可以根据它进行开发,而不会弄乱后端的数据。
示例
API 是在 Azure API 管理上创建的并且富有成效。 此 API 列在相应的 Azure API 门户中 - 开发人员现在找到了该 API 并想要尝试一下:
POST/SalesQuote 将在 SAP 中创建销售报价单。开发人员使用开发人员门户中的“尝试”按钮来查看行为。 “发送”按钮现在实际上在后端创建一条记录。
这可以预防吗?如果是这样 - 怎么办?这是否可以在 API 策略中实现(即 origin = api 门户 url 的模拟数据)?
我能想到的唯一其他选择是禁用“尝试”功能 - 这是一个糟糕的解决方案。
编辑:一般的“启用模拟”当然对于高效的 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>
仅当调用用户是“开发人员内部”组的成员(都是通过 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>
关于Azure API 管理/门户 : activate Mocking for "Try Out" in API Portal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63397159/