Категория Архивы: ОТДЫХ

HTTP 406 Ошибка при использовании угловых $http.get против SharePoint остальные конечные точки

Обновление: Марк AD ndersson указал этот большой кусок информации: HTTP://blogs.Office.com/2014/08/13/JSON-Light-Support-REST-SharePoint-API-Released/. Это объясняет много :).

Это может быть когда-нибудь худшее название блога! Anyhoo.

Обычно я все мои прототипирования против экземпляра O365. У меня есть мой личный экземпляр, так что я не придется беспокоиться о затрагивающих никому. Как в сторону – Помните, когда мы называем осуществляется вокруг виртуальных машин на наших ноутбуков с Мосс – SQL Server, IIS, решение Hyper-V vs. VMWare? Anyhoo...

Я разработал приложение с помощью угловых в этой среде, что делает, среди прочего, Это:

$HTTP.Get(serverUrl)
.успех(функция(данные, статус, заголовки, config) {

var getLinksResponse = данные;

getLinksResponse.value.forEach(функция(theResult) {

// и так далее и так пены

Это отлично работает в двух различных средах SharePoint онлайн. Однако, Когда мой коллега перенес его в экземпляр Cloudshare, он становится HTTP 406 Ошибка (который был в первый раз, я когда-либо получил что один, так что... Ура, Наверное). Мы сделали несколько исследований и заметил, что заголовок «Принять» был выключен. SharePoint онлайн был совершенно счастлив с:

Примите: применение/json

Но cloudshare экземпляра (который является SP на Прем, виртуальный сервер) хотели классический «odata = verbose» также добавлен в:

Примите: применение/json;OData = подробный

Чтобы это исправить, Мы добавили заголовка как таковой:

var config = {заголовки: {
«Accept»: ' приложение/json;OData = verbose'
}
};

$HTTP.Get(serverUrl,config)
.успех(функция(данные, статус, заголовки, config) {

var getLinksResponse = данные;

getLinksResponse.value.forEach(функция(theResult) {

// и так далее и так пены

Что избавился от 406, но он также изменил формат ответа. Это было больше... подробный. (Ха-ха!) Необходимы дополнительные изменения и вот окончательный результат:

var config = {заголовки: {
«Accept»: ' приложение/json;OData = verbose'
}
};

$HTTP.Get(serverUrl,config)
.успех(функция(данные, статус, заголовки, config) {

var getLinksResponse = данные;

getLinksResponse.d.Results.forEach(функция(theResult) {

// и так далее и так пены

Это только превратился в 30 минуту проблема для нас, Поэтому мы повезло. Надеюсь кто-то считает это полезным.

</конец>

Как задать в качестве области поиска людей / Источник контента с помощью SharePoint 2013 ИНТЕРФЕЙС API REST

У меня причин для работы с SharePoint 2013 API поиска через REST в первый раз. Я хотел бы искать людей, не документы. Ключ обучения здесь является то, что вы укажите источники контента через его GUID (или по крайней мере в этом случае). В следующем фрагменте показано jQuery как:

    loadExpertsAsync: функция() {

        jQuery.support.cors = Истина;

        $.Аякс({
            URL-адрес: Это.CreateFullApiUrl() +
                "?QueryText = «порталы»&SourceID = «b09a7990-05ea-4af9-81ef-edfab16c4e31»" +
                "&Выберите пункт Свойства ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Навыки,AboutMe,Интересы,Название должности,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&RowLimit = 99",
            метод: "Получить",
            заголовки: { "Примите": "применение/json; OData = подробный" },
            кэш: ложь,
            успех: функция (результат) {

В моем случае, Я бегу 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

Параметр идентификатор sourceid является то, что работал для меня.

(Я понимаю, что sourceid фактически может быть своего рода постоянный вещь с SP, но я всегда буду проверять все равно 🙂 ).

</конец>

undefinedПодписаться на мой блог.

Следуй за мной по щебетать на http://www.twitter.com/pagalvin

Пример SharePoint остальные звонки

Вот набор образца отдыха звонков, которые работают для меня и может помочь вам, а. По состоянию на 02/2014, there are two examples 🙂

  1. Ссылка на столбец с пробелами в его имени
  2. Ссылка на столбец множественного выбора
  3. Выполнять поиск людей через отдых

 

Я добавлю к этому, как проходит время.

Ниже приведены некоторые полезные чернила, я также нашел:

Ссылка на столбец с пробелами в его имени

Создать пользовательский список с столбец с именем «Блог Автор» (пространство между блог и автор).

$select для ссылки на этот столбец является:

image

Просто замените «_x0020_» пространство. Мы видим _x0020_ во многих примерах через Интернет и остальные не отличается.

Если вы не сделаете это, Вы обязаны получить сообщение об ошибке, как это:

Выражение “Автор блога” не является допустимым.

Достаточно легко.

Ссылка на столбец подстановок множественного выбора

Настройка:

  1. Создание настраиваемого списка указанных категорий.
  2. Добавьте некоторые категории. Я добавил категории константы выглядит так:image
  3. Создайте еще один пользовательский список, называется MockBlog и добавлять категории как столбец списка множественного выбора (или столбец сайта, если это является, как вы ролл).

Добавить некоторые элементы в список Mockblog и вы будете готовы.

Ajax-стиле вызова, с помощью jQuery будет выглядеть примерно так:

serverUrl  = "/_api/web/списки/GetByTitle(«MockBlog»)/элементы" +
             "?$Выберите = название,Категории/название,Blog_x0020_Author/название" + 
             "&$Разверните узел = Blog_x0020_Author,Категории";

Мы говорим SharePoint «дайте мне название для всех категорий (Категории/название). Получить фактические значения Название от $Разверните узелING списка категории.» (Мой спокойный перефразируя вероятно довольно рыхлая, но это как интерпретации).

Если вы делаете это через JavaScript и посмотрите на результат с помощью Fiddler, Вы получите что-то подобное в ответ:

 

image

(Выше, является объектом JSON)

Выполнять поиск людей через отдых

Я blogged об этом отдельно. Суть заключается в том, чтобы указать идентификатор sourceid параметр, значением которого является идентификатор GUID источника контента местных жителей. (Источники контента используется для вызова областей, и это мой oh-my так трудно не назвать все область для меня!).

Подробнее об этом здесь: http://www.mstechblogs.com/paul/?p=10385

 

</конец>

undefinedПодписаться на мой блог.

Следуй за мной по щебетать на http://www.twitter.com/pagalvin

Быстро и легко: Создайте сайт SharePoint с помощью отдыха

Есть много ресурсов вокруг этого шоу, как это сделать, но я не мог найти ссылку перейти к комплексной, так что мы здесь.

Можно создать узел SharePoint, с помощью API-интерфейса REST.  Вот пример, полностью запеченные:

<!--
    SiteRequestForm.html: Сбор информации и создание сайта для пользователя.
-->

<центр>
<Таблица>
    <TR>
        <ТД>Название сайта:</ТД>
        <ТД><вход Тип= "текст" имя= "Имя_сайта" ID= "Имя_сайта" /></ТД>
    </TR>
    <TR>
        <ТД ColSpan= "2">
            <вход Тип= "отправить" ID= «CreateSiteButton" значение= "Создать сайт" />
        </ТД>
    </TR>
</Таблица>
</центр>

<сценарий src="../Plugins/jQuery-1.11.0.min.js"></сценарий>

<сценарий>
var CreateSiteLogicContainer = {

    createSiteData: {
            «параметры": {
                __metadata: { «Тип": «SP.WebInfoCreationInformation" },
                URL-адрес: «Paultest1",
                Название: «Paultest1",
                Описание: «остальные создан веб пол!",
                Язык: 1033,
                WebTemplate: «sts",
                UseUniquePermissions: ложь
            }
    },

    createSite: функция () {

        jQuery.support.cors = Истина;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $(» #SiteName").вал();
        
        $.Аякс({
            URL-адрес: «https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            метод: «ПОСТ",

            заголовки: {
                «Принимаю": «application/json; OData = подробный",
                «content-type": «application/json;OData = подробный",
                «X-RequestDigest": $(«#__REQUESTDIGEST").вал()
            },

            данные: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            успех: функция () { предупреждение(«успех"); },
            Ошибка: функция () { предупреждение(«Ошибка"); }

        });
    },

    wireUpForm: функция () {
        $(» #CreateSiteButton").Нажмите кнопку(функция () {
            предупреждение(«О, чтобы попробовать и создать сайт.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</сценарий>

При успешном выполнении, Вы получаете пакет JSON в ответ, как это:

image

Мои ключевые мысли и знания из этого включают в себя:

  • Этот подход использует jQuery.  В моем случае, Моя библиотека jQuery расположен в «../ plugins.»  Вы хотите изменить, чтобы указать на местоположение ваших любимых JQ.
  • Можно скопировать и вставить весь фрагмент в веб-часть редактора контента на страницу и он должен работать нормально.  Вы хотите изменить конечную точку вызова API и убедитесь, что вы правильно ссылаться JQ.
  • URL-адрес задается относительно конечной точки вашего API.  В моем случае, Это создание дочерних сайтов под https://bigapplesharepoint.com
  • Вам не нужно предоставлять контент длина. Некоторые сообщения в блоге и MSDN документ подразумевает, что вы делаете, Но случилось для меня автоматически, который я предполагаю обрабатывается сам вызов $.ajax.
  • Эта линия необходима для того, чтобы избежать «запретному» ответ: «X-RequestDigest": $(«#__REQUESTDIGEST").вал().  Есть другие способы сделать это, но это очень приятно.  Я потерял ссылку на блог, который представил этот ярлык.  H/T к вам, Таинственный блоггер!

Удачи и надеюсь что это помогает кто-то.

</конец>

undefinedПодписаться на мой блог.

Следуй за мной по щебетать на http://www.twitter.com/pagalvin

Быстрый и простой: Возвращает только вызов REST SharePoint 100 Записи

Я работаю на общественных облицовочная веб-сайт для моей практике SharePoint в Нью-Йорк и он использует много вызовов JavaScript и отдыха для отображения содержимого.

Во время развития магистральных, Я просто создаю небольшого набора данных с 10 или так строк в пользовательский список и мои остальные звонки вытащил оттуда.  Однажды я bumped вверх по списку, чтобы иметь несколько сотен строк данных для проверки ожидаемого роста, Я обнаружил, что я получаю именно 100 строк, возвращенных обратно мои остальные звонки.

Это очень простая вещь для адреса.  В моем случае (и я верю в большинстве случаев), по умолчанию остальные вызовы SharePoint (и возможно как отраслевой стандарт?) возвращение 100 строк.  Для возвращения более чем по умолчанию, Используйте параметр $top на ваш звонок, как и в:

ПОЛУЧИТЬ /Insights Dev/_api/web/lists/GetByTitle(«MockBlog»)/элементы?$Выберите = ID,Название,Категории/название,Blog_x0020_Author/название,DatePublished,BlogSummary&$Разверните узел = Blog_x0020_Author,Категории&$фильтр =&$Топ = 9999

Я выбрал 9999 в этом случае с тех пор я знаю, что growth-wise, там не будет более чем 200 или так строк добавлены в этот список в год.  Если она становится неуклюжий, Мы можем реализовать некоторые подкачки вниз по дороге.

</конец>

undefinedПодписаться на мой блог.

Следуй за мной по щебетать на http://www.twitter.com/pagalvin