分类存档: 休息

HTTP 406 使用角 $http.get 针对 SharePoint 休息结束点时的错误

更新: 马克 AD ndersson 指出信息这个伟大的作品: http://blogs.office.com/2014/08/13/json-light-support-rest-sharepoint-api-released/. 这也解释了很多 :).

这可能是最糟糕的一篇博客文章标题过! 安美居.

我通常做所有我针对 O365 实例的原型. 我有我个人的实例,所以,我不需要担心影响别人. 顺便说一句 — — 记得当我们称之为进行虚拟机周围长满了苔藓 — — 我们笔记本电脑上 SQL Server, IIS, 决定 HYPER-V vs. VMWare? 安美居......

已经开发了一个应用程序,在这种环境不使用角, 除其他外, 这:

$http.get(serverUrl)
.成功(功能(数据, 状态, 标题, 配置) {

var getLinksResponse = 数据;

getLinksResponse.value.forEach(功能(结果) {

// 和这么泡沫

这两种不同 SharePoint 在线环境中工作正常. 不过, 当我的同事将其移植到一个 Cloudshare 实例时, 他正 HTTP 406 错误 (其中第一次我收到过那个, 所以...耶, 我想). 我们做了一些研究,发现"接受"标题关闭. SharePoint 在线感到满意:

接受: 应用程序/json

但 cloudshare 实例 (即 SP prem, 在虚拟服务器中承载) 想要经典"odata = 详细"以及在中添加:

接受: 应用程序/json;odata = 详细

要解决这个问题, 我们添加了这样的标题:

var config = {标题: {
接受: 应用程序/json;odata = 详细 '
}
};

$http.get(serverUrl,配置)
.成功(功能(数据, 状态, 标题, 配置) {

var getLinksResponse = 数据;

getLinksResponse.value.forEach(功能(结果) {

// 和这么泡沫

那摆脱 406, 但它也改变了响应的格式. 它是更多......详细. (哈哈!) 需要更多的变化,这里是最后的结果:

var config = {标题: {
接受: 应用程序/json;odata = 详细 '
}
};

$http.get(serverUrl,配置)
.成功(功能(数据, 状态, 标题, 配置) {

var getLinksResponse = 数据;

getLinksResponse.d.results.forEach(功能(结果) {

// 和这么泡沫

这只变成 30 我们的小问题, 所以我们很幸运. 希望有人发现这很有用.

</结束>

如何指定人为搜索范围 / 使用 SharePoint 的内容源 2013 其余的 API

我有理由与 SharePoint 工作 2013 搜索 API 通过第一次休息. 我想要搜索的人, 不是文档. 主要学习这里您指定通过其 GUID 的内容源 (或至少在此情况下). 下面的 jQuery 代码段演示如何:

    loadExpertsAsync: 功能() {

        jQuery.support.cors = true;

        $.ajax({
            url: .CreateFullApiUrl() +
                "?querytext = '门户'&源 id ='b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,技能,怀念,利益,JobTitle,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&rowlimit = 99",
            方法: "获取",
            标题: { "接受": "应用程序/json; odata = 详细" },
            高速缓存: false,
            成功: 功能 (结果) {

以我为例, 我运行了 API 针对 SharePoint 在线. 若要获取 GUID, 跟随了这些步骤:

  1. 访问 SharePoint 管理员中心
  2. 选择从左侧导航栏的"搜索"
  3. 选择"管理结果来源"
  4. 选择"本地人结果"
  5. 看看该 URL.

我的 URL 看起来有点像:

https://xyzzy-admin.sharepoint.com/_layouts/15/searchadmin/EditResultSource.aspx?level=tenant&sourceid=b09a7990%2D05ea%2D4af9%2D81ef%2Dedfab16c4e31&view=1

源 id 参数是什么为我工作.

(我明白,源 id 实际上可能是永久的事与 SP, 但我还是会经常检查🙂 ).

</结束>

undefined订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

示例 SharePoint 其余部分调用

这里有一组示例 REST 调用,工作对我来说,也会帮助你理解. 作为的 02/2014, there are two examples 🙂

  1. 引用其名称中的空格的列
  2. 多项选择的列的引用
  3. 执行通过 REST 的人搜索

 

将添加这随着时间的流逝.

在这里我也找到一些有用的油墨:

引用其名称中的空格的列

我用一个名为"博客作者"列创建自定义列表 (博客与作者之间的空间).

$select 来引用该列是:

image

只需替换"_x0020_"的空间. 我们看到互联网 _x0020_ 在许多例子中的,剩下的就是没有什么不同.

如果你不这样做, 你就有可能得到一个像这样的错误消息:

表达式 “博客作者” 是无效的.

足够简单.

参考多项选择查阅列

设置:

  1. 创建一个名为类别的自定义列表.
  2. 添加某些类别. 我广交添加类别:image
  3. 创建另一个称为 MockBlog 的自定义列表,添加类别作为一个多选列表列 (或网站列,如果这就是你的滚).

你 Mockblog 列表中添加一些项,你准备好了.

使用 jQuery Ajax 样式调用将会看起来像这样:

serverUrl   = "/_api/web/列表/GetByTitle('' MockBlog)/项目" +
             "?$选择 = 标题,类别/标题,Blog_x0020_Author/标题" + 
             "&$扩大 = Blog_x0020_Author,类别";

我们告诉 SharePoint"给我标题的所有类别 (类别/标题). 得到的实际值 标题$扩大ing 类别列表" (我宁静的意译是可能相当松散, 但是,这我如何解释它).

如果你这么做通过 JavaScript 和使用提琴手来看看输出, 你得到这样的回报:

 

image

(以上就是一个 JSON 对象)

执行通过 REST 的人搜索

我这博客上分别. 关键是要指定源 id 参数,其值是当地人民内容源的 GUID. (内容源用于被称为作用域,它是我 — — 哦 — — 我努力不去调用一切对我来说一个范围!).

了解更多关于它在这里: http://www.mstechblogs.com/paul/?p=10385

 

</结束>

undefined订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

快速、 方便: 创建使用其余的 SharePoint 站点

有很多的周围显示资源如何执行此操作, 但我找不到一个全面转到链接, 所以在这里我们是.

您可以创建使用其他 API 的 SharePoint 站点。  这里是一个完全被烘烤的示例:

<!--
    SiteRequestForm.html: 收集信息,并为该用户创建一个站点.
-->

<中心>
<>
    <tr>
        <运输署>站点名称:</运输署>
        <运输署><输入 类型="文本" 名称="SiteName" id="SiteName" /></运输署>
    </tr>
    <tr>
        <运输署 colspan="2">
            <输入 类型="提交" id="CreateSiteButton" 价值="创建网站" />
        </运输署>
    </tr>
</>
</中心>

<脚本 src="../Plugins/jquery-1.11.0.min.js"></脚本>

<脚本>
var CreateSiteLogicContainer = {

    createSiteData: {
            "参数": {
                __metadata: { "类型": "SP。WebInfoCreationInformation" },
                Url: "Paultest1",
                标题: "Paultest1",
                说明: "其余创建 web 由保罗!",
                语言: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: false
            }
    },

    createSite: 功能 () {

        jQuery.support.cors = true;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").瓦尔();
        
        $.ajax({
            url: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            方法: "开机自检",

            标题: {
                "接受": "应用程序/json; odata = 详细",
                "内容类型": "应用程序/json;odata = 详细",
                "X-RequestDigest": $("# __REQUESTDIGEST").瓦尔()
            },

            数据: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            成功: 功能 () { 警报("成功"); },
            错误: 功能 () { 警报("错误"); }

        });
    },

    wireUpForm: 功能 () {
        $("#CreateSiteButton").单击(功能 () {
            警报("努力尝试,并创建网站。");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</脚本>

当成功时, 你得到一个 JSON 数据包中像这样的反应:

image

我的主要思想和知识包括从:

  • 此方法使用 jQuery。  以我为例, 我 jQuery 库位于"....../ 插件."  你会想要更改,使其指向您最喜爱的 JQ 位置.
  • 您可以复制并粘贴到页面上的内容编辑器 Web 部件的那整个代码段,它应该可以正常。  你会想要改变的 API 调用的结束点,请确保您正确地引用 JQ.
  • 该 URL 是相对于您的 API 的终结点。  以我为例, 它创建子网站下方 https://bigapplesharepoint.com
  • 您不需要提供一个内容长度. 一些博客文章和 MSDN 文档意味着你做, 但对我来说会自动发生, 我猜这是正在处理的 $虽然调用本身.
  • 这条线有需要提供避免"禁忌"的响应: "X-RequestDigest": $("# __REQUESTDIGEST").瓦尔().  还有其他的方法去做, 但这是很好。  提供此快捷方式的博客,我失去了联系。  H/T 到你, 神秘的博客!

好运,希望这可以帮助一个人出去.

</结束>

undefined订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

快速和简单: SharePoint 其余部分调用仅返回 100 记录

我一直在一个公共的面对网站上为我的 SharePoint 实践中 纽约 然后使用大量的 JavaScript 和休息的来电显示的内容.

期间主线发展, 我只是创建一个小的数据集与 10 或所以我休息电话和自定义列表中的行从那里拉扯了。  一次我撞了要有几个几百行的数据来测试预期的增长的列表, 我发现我正正好 100 返回回在我休息的电话行.

这是非常简单的事情到地址。  以我为例 (在大多数情况下,我相信), 默认的其余部分调用到 SharePoint (和可能作为一种工业标准?) 返回 100 行。  要比默认值更多的回报, 在您的电话上使用 $top 参数, 如在:

得到 /Insights Dev/_api/web/lists/GetByTitle('' MockBlog)/项目?$选择 = ID,标题,类别/标题,Blog_x0020_Author/标题,DatePublished,BlogSummary&$扩大 = Blog_x0020_Author,类别&$筛选器 =&$顶部 = 9999

我拿起 9999 在这种情况下既然都知道,正常的生长发育, 不会有多个 200 或者,所以一年中,我们已添加到此列表中行。  如果它变得笨拙, 我们可以实现一些分页在路上.

</结束>

undefined订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin