首页 > 其他分享 >使用Insomnia来调用Dataverse的Web API

使用Insomnia来调用Dataverse的Web API

时间:2024-10-26 13:18:49浏览次数:23  
标签:Web cn Base Insomnia Environment _. API https 环境变量

这是我的第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_Web API


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

使用Insomnia来调用Dataverse的Web API_Insomnia_02


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

使用Insomnia来调用Dataverse的Web API_Microsoft Dataverse_03


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

使用Insomnia来调用Dataverse的Web API_Power Platform_04


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

使用Insomnia来调用Dataverse的Web API_Insomnia_05

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

  1. Folder Environment (highest priority)
  2. Sub Environment
  3. Base 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"
}


然后我点击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_Power Platform_10


选择后的结果如下:

使用Insomnia来调用Dataverse的Web API_Web API_11


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

使用Insomnia来调用Dataverse的Web API_Microsoft Dataverse_12


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

使用Insomnia来调用Dataverse的Web API_Power Platform_13

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

使用Insomnia来调用Dataverse的Web API_Insomnia_14


我这里配置了如下的值:

使用Insomnia来调用Dataverse的Web API_Microsoft Dataverse_15


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

使用Insomnia来调用Dataverse的Web API_Microsoft Dataverse_16


使用Insomnia来调用Dataverse的Web API_Insomnia_17


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

使用Insomnia来调用Dataverse的Web API_Web API_18


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

使用Insomnia来调用Dataverse的Web API_Microsoft Dataverse_19


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

使用Insomnia来调用Dataverse的Web API_Microsoft Dataverse_20


注意Auth保持默认即可。

使用Insomnia来调用Dataverse的Web API_Microsoft Dataverse_21


Headers设置如下:

使用Insomnia来调用Dataverse的Web API_Insomnia_22


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

使用Insomnia来调用Dataverse的Web API_Web API_23


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

使用Insomnia来调用Dataverse的Web API_Power Platform_24


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

使用Insomnia来调用Dataverse的Web API_Microsoft Dataverse_25


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

使用Insomnia来调用Dataverse的Web API_Power Platform_26


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

使用Insomnia来调用Dataverse的Web API_Power Platform_27


标签:Web,cn,Base,Insomnia,Environment,_.,API,https,环境变量
From: https://blog.51cto.com/luoyong/12369240

相关文章