Web API是一项新功能,首次为Dynamics CRM 2016引入。您可以将Dynamics 365 Web API与不同的编程语言、多个平台和设备一起使用。Dynamics365中的Web API使用开放数据协议(OData),也称为OData版本4。由于Dynamics 365 Web API是基于开放标准构建的,因此无需使用任何程序集
使用Dynamics365时,组织数据服务已弃用,取而代之的是Web API。API的主要目的是提供与组织服务同等的服务,并尽可能减少限制。
以下是Web API的特点:
可以使用JavaScript调用和访问Dynamics365 Web API。您可以将Web API与HTML Web资源、表单脚本和功能区命令一起使用,以对数据执行各种操作。
Web API非常方便与JavaScript一起使用,因为它以JSON对象的形式返回结果,可以很容易地转换为JavaScript对象。
在Dynamics365中,Web API主要用于HTML Web资源和单页应用程序。
在JavaScript Web资源中使用Web API的主要好处是,您不需要进行身份验证,因为Web资源是应用程序的一部分,只能由经过身份验证的用户访问。您可以直接在JavaScript Web资源中编写Web API操作的代码,并执行操作。
单页应用程序能够进行Dynamics365 Web API调用。它们由许多在浏览器上运行的JavaScript库组成,这些库使用交叉原始资源共享(CORS)对Dynamics365 API进行身份验证。
在单页应用程序中使用JavaScript时,adal.js库用于允许用户从托管的web应用程序进行身份验证和访问Dynamics 365。您还必须集成包含身份验证令牌的授权标头。
接下来,在本章中,我们将介绍一些使用Web API使用Web资源执行CRUD操作的示例。
Dynamics365 Web API使用XMLHttpRequest对象执行操作。
XMLHttpRequest(XHR)是所有浏览器都支持的本地对象,它支持AJAX技术使网页动态。
我们将看到一个使用Web API和XMLHttpRequest对象的非常简单的示例。
以下是将获取所有机会的Web API代码:
- var req = new XMLHttpRequest();
- req.open("GET", Xrm.Page.context.getClientUrl() +
- "/api/data/v8.2/opportunities()", true);
- req.setRequestHeader("OData-MaxVersion", "4.0");
- req.setRequestHeader("OData-Version", "4.0");
- req.setRequestHeader("Accept", "application/json");
- req.setRequestHeader("Content-Type",
- "application/json; charset=utf-8");
- req.setRequestHeader("Prefer", "odata.include-annotations="*"");
- req.onreadystatechange = function() {
- if (this.readyState === 4) {
- req.onreadystatechange = null;
- if (this.status === 200) {
- var result = JSON.parse(this.response);
- var opportunityid = result["opportunityid"];
- } else {
- Xrm.Utility.alertDialog(this.statusText);
- }
- }
- };
- req.send();
在前面的代码中,您会注意到,初始化一个新的XMLHttpRequest对象后,您需要在发送或设置它的任何属性之前打开它。打开方法的参数是HTTP请求方法(GET、PUT、POST、DELETE等)、URL和指示操作是否异步执行的布尔参数。
`Web API URL包含以下内容:
上例中使用的URL是Xrm.Page.context.getClientUrl()+“/api/data/v8.2/opportunities()。
HTTP请求还支持如下所述的各种HTTP方法:
对于HTTP请求,还使用了各种HTTP标头,如下所述:
Dynamics 365仅支持JSON格式。因此,以下标题可以与Dynamics365 Web API一起使用。
对于每个请求,必须包含application/json的Accept头值,即使在没有响应的情况下,它也会返回body。如果出现错误,将以JSON格式返回。您的代码可以在没有此标头的情况下工作,但最好将其用于您的请求。
必须始终包含标头、OData Version和OData Max Version,并将其设置为值4.0。OData的当前版本是4.0,但为了避免将来OData版本的歧义,您应该在请求中包含这些标头。
不包括任何最近更改的属性可能包括缓存的数据。因此,要覆盖Web API请求的浏览器缓存,必须包含If-Non-Match:请求正文中的标头为null。
在Dynamics365中了解了Web API的基本概念后,我们将转向使用Web API执行各种操作。我们还将学习如何使用Web A