博客地址:http://blog.csdn.net/FoxDave

本篇主要讲解如何应用$batch查询选项来批量执行REST/OData请求,它将多个操作捆绑到一个请求中,可以改进应用程序的性能。

$batch选项执行摘要

SharePoint Online(也包括SharePoint 2016)和Office 365的API实现了OData的$batch查询选项,下面罗列了一些主要的点:

1. 请求URL由根服务URL和$batch选项构成,例如https://fabrikam.sharepoint.com/_api/$batch或https://fabrikam.office365.com/api/v1.0/me/$batch。

2. HTTP请求的MIME类型为multipart/mixed。

3. 请求的body被请求头的边界字符串分割成了相对独立的部分。

4. 请求body的每个部分有自己的HTTP动作符和REST URL,还有内部的body。

5. 一个部分可以是读操作或写操作的变更集合或函数调用。变更集合本身的MIME类型是multipart/mixed,它里面的部分包含插入、更新或删除操作。

6. 最后一点需要注意,不支持“全部或没有”这种表达,变更集合中的操作是相对独立的,任何失败的部分都不会影响其他的,并且也不会回滚,这一点在开发的时候需要留意。

代码示例

C#:OfficeDev/Core.ODataBatch

JavaScript:andrewconnell/sp-o365-rest

请求和响应的示例

下面是一个带有两个GET操作的HTTP请求从两个不同列表获取列表项标题的请求和响应示例。

POST https://fabrikam.sharepoint.com/_api/$batch HTTP/1.1
Authorization: Bearer <access token omitted>
Content-Type: multipart/mixed; boundary=batch_e3b6819b-13c3-43bb-85b2-24b14122fed1
Host: fabrikam.sharepoint.com
Content-Length: 527
Expect: 100-continue--batch_e3b6819b-13c3-43bb-85b2-24b14122fed1
Content-Type: application/http
Content-Transfer-Encoding: binaryGET https://fabrikam.sharepoint.com/_api/Web/lists/getbytitle('Composed%20Looks')/items?$select=Title HTTP/1.1--batch_e3b6819b-13c3-43bb-85b2-24b14122fed1
Content-Type: application/http
Content-Transfer-Encoding: binaryGET https://fabrikam.sharepoint.com/_api/Web/lists/getbytitle('User%20Information%20List')/items?$select=Title HTTP/1.1--batch_e3b6819b-13c3-43bb-85b2-24b14122fed1--

下面是带有一个DELETE操作和一个GET操作的请求示例

POST https://fabrikam.sharepoint.com/_api/$batch HTTP/1.1
Authorization: Bearer <access token omitted>
Content-Type: multipart/mixed; boundary=batch_7ba8d60b-efce-4a2f-b719-60c27cc0e70e
Host: fabrikam.sharepoint.com
Content-Length: 647
Expect: 100-continue--batch_7ba8d60b-efce-4a2f-b719-60c27cc0e70e
Content-Type: multipart/mixed; boundary=changeset_efb6b37c-a5cd-45cb-8f5f-4d648006e65d--changeset_efb6b37c-a5cd-45cb-8f5f-4d648006e65d
Content-Type: application/http
Content-Transfer-Encoding: binaryDELETE https://fabrikam.sharepoint.com/_api/Web/lists/getbytitle('OldList') HTTP/1.1
If-Match: "1"--changeset_efb6b37c-a5cd-45cb-8f5f-4d648006e65d--
--batch_7ba8d60b-efce-4a2f-b719-60c27cc0e70e
Content-Type: application/http
Content-Transfer-Encoding: binaryGET https://fabrikam.sharepoint.com/_api/Web/lists HTTP/1.1--batch_7ba8d60b-efce-4a2f-b719-60c27cc0e70e--

感兴趣想了解更多关于OData库信息的可以访问官网。

SharePoint REST接口部分的讲述就到这里。

SharePoint REST API - 一个请求批量操作相关推荐

  1. SharePoint REST API - REST请求导航的数据结构

    博客地址:http://blog.csdn.net/FoxDave 从一个既定的URL获取其他SharePoint资源 当你用SharePoint REST服务进行开发的时候,你经常会从指定的一个 ...

  2. ASP.NET Web API 记录请求响应数据到日志的一个方法

    原文:ASP.NET Web API 记录请求响应数据到日志的一个方法 原文:http://blog.bossma.cn/dotnet/asp-net-web-api-log-request-resp ...

  3. 请求接口返回的是一个html_搜狗美图 API 接口请求调用

    搜狗美图 API 接口在网上已经很多且大都封装成了 API 供别人调用.支持前台跨域请求,以POST方式提交图片即可.搜狗美图 API 接口每日都会更新一张美图,本 API 接口可选择生成当日美图,也 ...

  4. [sharepoint]rest api文档库文件上传,下载,拷贝,剪切,删除文件,创建文件夹,修改文件夹属性,删除文件夹,获取文档列表...

    写在前面 最近对文档库的知识点进行了整理,也就有了这篇文章,当时查找这些接口,并用在实践中,确实废了一些功夫,也为了让更多的人走更少的弯路. 系列文章 sharepoint环境安装过程中几点需要注意的 ...

  5. SharePoint REST API - 基本操作(一)

    博客地址:http://blog.csdn.net/FoxDave 本文讲述如何应用SharePoint的REST接口完成基本的增删查改操作. 使用SharePoint客户端API和REST服务进 ...

  6. API HTTP 请求调试:Postman

    参考: Postman 是一个非常棒的Chrome扩展,提供功能强大的API & HTTP 请求调试. 它能够发送任何类型的HTTP requests (GET, HEAD, POST, PU ...

  7. Spring MVC 原理探秘 - 一个请求的旅行过程

    1.简介 在前面的文章中,我较为详细的分析了 Spring IOC 和 AOP 部分的源码,并写成了文章.为了让我的 Spring 源码分析系列文章更为丰富一些,所以从本篇文章开始,我将来向大家介绍一 ...

  8. 谷歌地图API位置请求_Google Maps API

    谷歌地图API位置请求  Google maps api 以xml格式传回请求的地址:http://maps.google.com/maps/api/geocode/xml?latlng=39.910 ...

  9. ios调用restful接口_Office 365 iOS SDK-如何调用SharePoint REST API

    所有iOS SDK示例均提供了用于访问邮件,日历,ODfB文件的工作代码,但没有一个示例显示如何访问SharePoint列表项.因此,我正在尝试在Swift中进行一个简单的REST调用,但始终出现以下 ...

最新文章

  1. python重难点之装饰器详解
  2. Python开发笔记之正则表达式的使用
  3. 三菱plc两个16转换32位_三菱FX2NPLC如何将十进制数转换成十六进制-专业自动化论坛-中国工控网论坛...
  4. 【完结】你对深度学习模型的理解是否足够深刻,这12篇文章可以作为一个参考...
  5. 原生态Vim使用快捷键
  6. 15.IDA-查看XREF列表
  7. Java Spring源代码学习之how is bean scanned - did not answer when this.beanDefinitionNames is filled
  8. 怎么删除已经安装的mysql_怎么样删除已经安装的mysql | wdlinux致力于Linux服务器架构,性能优化.免费CDN加速系统,免费智能DNS解析,负载均衡,集群分流...
  9. View(视图)——对话框之一般对话框
  10. k-means聚类算法C++实现
  11. 华为荣耀4X的ROOT
  12. 使用360安全卫士对计算机进行体检,360安全卫士使用教程 电脑体检
  13. java cropper 上传_基于cropper.js的图片上传和裁剪
  14. 程序员工资一般多少_一般程序员真实工资 程序员工资薪酬大起底
  15. 知识图谱下图神经网络、图计算、图数据、图数据库未来发展趋势如何?
  16. C#的DataTable详解
  17. 关于JavaScript打印去掉页眉页脚
  18. 一次性计时器和间隔性计时器的实现
  19. Re:从零开始的DS生活 轻松和面试官扯一个小时栈
  20. linux下搜狗拼音隐藏悬浮状态栏

热门文章

  1. apicloud入门学习笔记1:简单介绍
  2. etcd部署简单说明
  3. 解决python3缺少zlib的问题
  4. ThreadLocal 在web环境下使用的边界问题
  5. nodejs 安装express
  6. 2015 UESTC Winter Training #6【Regionals 2010 North America - Rocky Mountain】
  7. VC编写程序在debug下正常,在release下错误
  8. 如何利用期限来完成任务
  9. [转载]windows2003上IIS+PyISAPIe1.1..0部署成功
  10. 诗与远方:无题(三十二)- 曾经写给妹子的一首诗