当前位置:首页 » 《随便一记》 » 正文

使用Insomnia来调用Dataverse的Web API

4 人参与  2024年12月08日 18:01  分类 : 《随便一记》  评论

点击全文阅读


这是我的第513篇原创文章,写于2024年10月26日。

以前我写过一篇文章: 配置Postman通过OAuth 2 implicit grant获取D365数据 ,以前我这个文章参考的的官方原文使用的是Postman 这个工具,现在变成使用 Insomnia了,官方原文是: Use Insomnia with Dataverse Web API 。所以我今天来讲讲使用Insomnia来调用Dataverse的Web API。

首先请参考官方的  Install Insomnia 文档下载并安装好 Insomnia ,我这里安装的版本如下:

使用Insomnia来调用Dataverse的Web API_Microsoft Dataverse

这是我安装后的欢迎界面:

使用Insomnia来调用Dataverse的Web API_Web API_02

我先讲这个软件的两个设置,打开菜单栏的Application > Preferences 菜单项。

使用Insomnia来调用Dataverse的Web API_Web API_03

如果Show variable source and value选项是默认选中的,我建议取消选中,这样可以看到你有些地方输入的是环境变量,放上去环境变量依然可以看到环境变量的值,而不是直接先是为环境变量的值,后者这种方法会让我误以为我输入的,而不是使用环境变量。如果 Autocomplete popup delay (ms)如果为0的话,我建议设置为300,避免到时候Autocomplete在某些电脑上显示不出来。

使用Insomnia来调用Dataverse的Web API_Insomnia_04

我先创建一个Project,我这里放在本地就好:

使用Insomnia来调用Dataverse的Web API_Insomnia_05

我们的配置会用到Insomnia的 环境变量(Environment Variables),简单来说就是类似配置项,有优先级一说,具体优先级如下,我这篇文章会用到Base Environment和Sub Environment。

Folder Environment (highest priority)Sub EnvironmentBase Environment (lowest priority)

首先我在主页面点击 Environments旁边的加号按钮,创建一个名称为Base Environment的Base Environment。

使用Insomnia来调用Dataverse的Web API_Insomnia_06

这里要用JSON 的key-value形式,我这里设置如下,与官方文档稍有不同,考虑到了中国大陆版本的特殊性,key以 _cn 结尾的代表如果使用的是中国大陆版本的Power Platform需要使用的,我增加了有些设置,后面会用到。这里配置的是Base Environment,整个Project都可以使用,当然后面我会用Sub Environment覆盖部分值或者新增部分值。值得注意的是环境变量可以嵌套使用,{{ 和 }}之间便是嵌套了其他环境变量的值。

登录后复制
{"resourceurl": "https://luoyong.crm.dynamics.com","resourceurl_cn": "https://luoyong.crm.dynamics.cn","version": "9.2","webapiurl": "{{ _.resourceurl }}/api/data/v{{ _.version }}/","webapiurl_cn": "{{ _.resourceurl_cn }}/api/data/v{{ _.version }}/","redirecturl": "https://localhost","clientid": "7cc5e50a-d1ab-4ebc-9c53-1ed491f623c1","tenantid": "499b3b50-942b-4cb5-9809-3e3a6e5824d9","clientsecret": "wCs8Q~Q0CllY2veirmuL7xX6fAeZ6cHGbPnumbah","bearertoken":"placeholder","authurl": "https://login.microsoftonline.com/{{ _.tenantid }}/oauth2/v2.0/authorize","authurl_cn": "https://login.partner.microsoftonline.cn/{{tenantid}}/oauth2/v2.0/authorize","implicitauthurl": "https://login.microsoftonline.com/{{ _.tenantid }}/oauth2/authorize?resource={{ _.resourceurl }}","implicitauthurl_cn": "https://login.partner.microsoftonline.cn/{{ _.tenantid }}/oauth2/authorize?resource={{ _.resourceurl_cn }}","tokenurl": "https://login.microsoftonline.com/{{ _.tenantid }}/oauth2/token","tokenurl_cn": "https://login.partner.microsoftonline.cn/{{ _.tenantid }}/oauth2/token","ODataVersion": "4.0","ODataMaxVersion": "4.0","globalclientid": "51f81489-12ee-4a9e-aaae-a2591f45987d"}
1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.

然后我点击Base Environment旁边的加号,选择 Shared environment, 这是创建 Sub Environment ,相同的key的值会覆盖Base Environment的值,当然也可以新增环境变量的值。

使用Insomnia来调用Dataverse的Web API_Insomnia_07

默认名称是New Environment,我一般双击名称后改成合适的,比如我这个是用于开发环境的,我命名为Dev Environment,当然我还可以新增用于Sit环境的 Sit Environment,我这个环境变量的内容很简单,我就覆盖下Base Environment的 resourceurl的值,设置的值如下图:

使用Insomnia来调用Dataverse的Web API_Power Platform_08

然后一般我会为Microsoft Dataverse创建一个单独的Colection,点击Collections旁边的加号创建。

使用Insomnia来调用Dataverse的Web API_Power Platform_09

第一步先选好Base Environment,点击左边的Base Environment,选择我前面创建的Base Environment,并选择我前面创建的Dev Environment。

使用Insomnia来调用Dataverse的Web API_Insomnia_10

选择后的结果如下:

使用Insomnia来调用Dataverse的Web API_Power Platform_11

然后我一般会用文件夹folder来分类,点击Filter旁边的加号,再点击New folder这个选项。

使用Insomnia来调用Dataverse的Web API_Insomnia_12

比如我可能创建了如下的文件夹:

使用Insomnia来调用Dataverse的Web API_Microsoft Dataverse_13

第一个我演示文件夹用OAuth 2.0的Client Credentials认证。我在这些配置中使用环境变量的值可以利用自动完成,输入 _. 稍微停顿下就会看到可用的环境变量,选择好就行。或者直接同时按住 Ctrl 键加上空格键(SPACE键) 也可以出来提示,选择合适的环境变量。

使用Insomnia来调用Dataverse的Web API_Microsoft Dataverse_14

我这里配置了如下的值:

使用Insomnia来调用Dataverse的Web API_Microsoft Dataverse_15

将鼠标放到环境变量上会告知用的是使用的是Sub Environment,它的值是什么,如下图:

使用Insomnia来调用Dataverse的Web API_Web API_16

使用Insomnia来调用Dataverse的Web API_Microsoft Dataverse_17

点击右下角的Refresh Token 或者Fetch Token就可以获取到一个token。

使用Insomnia来调用Dataverse的Web API_Microsoft Dataverse_18

为了方便后面的请求分类,我再建了一个文件夹CRUD,然后再在这个CRUD文件夹中建立一个HTTP Request,我命名为 RetrieveMultiple Request 。

使用Insomnia来调用Dataverse的Web API_Microsoft Dataverse_19

这个Request的GET url和Params设置如下:

使用Insomnia来调用Dataverse的Web API_Insomnia_20

注意Auth保持默认即可。

使用Insomnia来调用Dataverse的Web API_Power Platform_21

Headers设置如下:

使用Insomnia来调用Dataverse的Web API_Power Platform_22

点击Send按钮就可以看到返回结果了:

使用Insomnia来调用Dataverse的Web API_Insomnia_23

点击Console可以看更多的信息如下:

使用Insomnia来调用Dataverse的Web API_Insomnia_24

第二种我演示使用OAuth 2.0的 Implicit 认证,使用的配置如下:

使用Insomnia来调用Dataverse的Web API_Insomnia_25

然后点击右下角的Fetch Token按钮就会弹回登录页面,认证通过后就会返回token,其余的请求和前面的OAuth 2.0的Client Credential是一样的。

使用Insomnia来调用Dataverse的Web API_Insomnia_26

值得注意的是,这个认证用的是一个全球环境都自动配置好的一个Client Id,值为 51f81489-12ee-4a9e-aaae-a2591f45987d ,如果你用于中国大陆的环境并不可用。所以最好自己创建一个App,记得这个App的Authentication 的 Access tokens属性要勾选,否则获取不了token。

使用Insomnia来调用Dataverse的Web API_Web API_27


点击全文阅读


本文链接:http://zhangshiyu.com/post/198259.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1