本文介绍如下内容:
创建API Management 实例;
向API Management 添加一组后端API;
体验使用Azure Portal 通过APIM测试调用后端API;
体验使用Postman调用 被APIM保护(即为API开启订阅功能)的后端API;
去掉APIM对API的订阅保护;
创建需要几分钟时间,创建完成转到资源可看到如下界面:
向apim添加api后,将使用apim的url 代替原有后端api的url进行访问。
本文使用了微软官方提供的测试api:https://conferenceapi.azurewebsites.net/?format=json
我们可以先看下这个由微软提的测试api:
将url中的?format=json去掉,可以看到如下页面,该页面描述了这一组api中的每个api的请求类型(get/post),参数,返回值等等。
我们测试其中某个get请求,以get speakers 为例,在url中直接输入如下地址,即可得到speakers的列表:
https://conferenceapi.azurewebsites.net/speakers
点击api标签,点击添加 openapi:
输入如下地址:https://conferenceapi.azurewebsites.net/?format=json
可以为api增加一个后缀,例如本例中使用了“sean-first-api”作为后缀:
添加成功后,可以看到如下界面:
可以在Azure Portal 对单个API进行测试,例如我们对get speakers 进行测试,点击要测试的API,点击“Test”,点击“Send”即可得到从后端API返回的结果:
注意,在此过程中,可以修改header,查询参数等;
得到结果如下:
在请求header中我们注意到如下内容:
Ocp-apim-subscription-key:xxxxxxx-xxxxx
这个key是APIM对API增加的 一种“保护”,防止未经授权的客户端随意对API进行访问。
我们也可以在浏览器中尝试get speakers api, 原始后端api 可以直接返回结果,使用apim后,则返回:
{ "statusCode": 401, "message": "Access denied due to missing subscription key. Make sure to include subscription key when making requests to an API." }
在订阅页面,我们能找到能够顺利调用该api的订阅,将其中的“built-in all access subscription”中的 key 添加到 request header 的 Ocp-apim-subscription-key 里即可访问apim保护的api,
如下图,在postman中设置header,然后可以正确返回结果。
如果你的api是要公开给公众使用或其他原因就无需订阅保护,则可以在 api 上setting里,将需要订阅的选框去掉,保存后,即可无需 Ocp-apim-subscription-key 就能正常访问了。