فئة المحفوظات: بقية

HTTP 406 خطأ عند استخدام $http.get الزاوي ضد SharePoint بقية نقاط النهاية

التحديث: وأشار مارك AD نديرسون هذا قطعة كبيرة من المعلومات: http://blogs.office.com/2014/08/13/json-light-support-rest-sharepoint-api-released/. وهذا ما يفسر الكثير :).

قد يكون عنوان بلوق وظيفة أسوأ من أي وقت مضى! Anyhoo.

عادة القيام به كل من بلدي النماذج ضد مثيل O365. لدى بلدي مثيل شخصية حتى أن ليس لدى لأن تشعر بالقلق إزاء التأثير على أي شخص آخر. بوصفها جانبا--تذكر عندما ندعو يجري حول الأجهزة الظاهرية على كمبيوتر محمول لدينا مع موس – SQL Server, IIS, البت مقابل هايبر-V. أم وير? Anyhoo...

وكان البلدان المتقدمة النمو إلى تطبيق استخدام الزاوي في هذه البيئة أن يفعل, أمور أخرى, وهذا:

$http.get(سيرفيرورل)
.النجاح(الدالة(البيانات, مركز, رؤوس, التهيئة) {

var جيتلينكسريسبونسي = البيانات;

getLinksResponse.value.forEach(الدالة(ثيريسولت) {

// وهكذا، وحتى زبد

وهذا كان يعمل على ما يرام في SharePoint على الإنترنت بيئات مختلفة. ومع ذلك, عندما استدار زميلي إلى مثيل كلودشاري, أنه تم الحصول HTTP 406 خطأ (كانت المرة الأولى حصلت من أي وقت مضى أن أحد, حيث.. ياي, أخمن). ونحن لم قليلاً من البحوث، ولاحظت أن رأس "قبول" قبالة. وكان سعيداً تماما مع SharePoint على الإنترنت:

قبول: تطبيق/json

لكن مثيل كلودشاري (وهو س في بريم, واستضافت في ملقم ظاهري) أراد الكلاسيكية "odata = مطول" وأضاف كذلك في:

قبول: تطبيق/json;odata = مطول

لحل هذه المشكلة, وأضاف نحن الرأس على هذا النحو:

التكوين فأر = {رؤوس: {
'قبول': ' التطبيق/json;odata = مطول '
}
};

$http.get(سيرفيرورل,التهيئة)
.النجاح(الدالة(البيانات, مركز, رؤوس, التهيئة) {

var جيتلينكسريسبونسي = البيانات;

getLinksResponse.value.forEach(الدالة(ثيريسولت) {

// وهكذا، وحتى زبد

التي حصلت على التخلص من 406, بل أنه أيضا تغيير تنسيق الاستجابة. أنه كان أكثر.. مطول. (هاها!) تم إدخال مزيد من التغييرات المطلوبة، وهنا هو النتيجة النهائية:

التكوين فأر = {رؤوس: {
'قبول': ' التطبيق/json;odata = مطول '
}
};

$http.get(سيرفيرورل,التهيئة)
.النجاح(الدالة(البيانات, مركز, رؤوس, التهيئة) {

var جيتلينكسريسبونسي = البيانات;

جيتلينكسريسبونسي.d.results.forEach(الدالة(ثيريسولت) {

// وهكذا، وحتى زبد

وهذا فقط تحولت 30 مشكلة دقيقة بالنسبة لنا, لذا نحن حالفه. نأمل شخص ما يجد هذا مفيدة.

</نهاية>

كيفية تحديد الناس كنطاق البحث / مصدر المحتوى باستخدام SharePoint 2013 بقية API

كان السبب العمل مع SharePoint 2013 API البحث عبر بقية للمرة الأولى. كنت أرغب في البحث عن أشخاص, لا وثائق. مفتاح التعلم هنا أنه يمكنك تحديد مصادر المحتوى عبر guid الخاص به (أو على الأقل في هذه الحالة). يظهر أجزاء التعليمات البرمجية المتكررة التالية مسج كيف:

    لواديكسبيرتساسينك: الدالة() {

        jQuery.support.cors = صحيح;

        $.أجاكس({
            عنوان url: وهذا.كريتيفولابيورل() +
                "?كويريتيكست = 'بوابات'&سورسيد = 'b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&سيليكتبروبيرتيس = ' لينكيدينبروفيليورل,جوجليسيركليسبروفيليورل,بالارجيبروفيليبيكتوريورلس,باجريدبيكتوريس,ووركيميل,المهارات,AboutMe,المصالح,جوبتيتلي,باستبروجيكتس,بيكتوريورل,بريفيريدنامي,تويتيرهاندلي,لينكيدينبروفيليورل,بريفيريدنامي,جوجليسيركليسبروفيليورل '" +
                "&rowlimit = 99",
            الأسلوب: "الحصول على",
            رؤوس: { "قبول": "تطبيق/json; odata = مطول" },
            ذاكرة التخزين المؤقت: كاذبة,
            النجاح: الدالة (النتيجة) {

في حالتي, أنا تشغيل API ضد SharePoint على الإنترنت. للحصول على المعرف الفريد العمومي, لقد اتبعت هذه الخطوات:

  1. الوصول إلى مركز مسؤول SharePoint
  2. حدد "بحث" من شريط التنقل الأيسر
  3. حدد "إدارة مصادر نتيجة"
  4. حدد "السكان المحليين نتائج"
  5. انظروا إلى عنوان URL.

بدأ لي عنوان شيء من هذا القبيل:

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

المعلمة سورسيد ما عملت بالنسبة لي.

(وأفهم أن سورسيد قد يكون فعلا نوعا من شيء دائم مع SP, but I’ll always check anyway 🙂 ).

</نهاية>

undefinedالاشتراك في بلادي بلوق.

اتبعني على التغريد في http://www.twitter.com/pagalvin

المثال SharePoint بقية المكالمات

هنا هو مجموعة من المكالمات بقية العينة التي يعمل بالنسبة لي، وقد تساعدك على الخروج، وكذلك. كمن 02/2014, there are two examples 🙂

  1. مرجع عمود مع مسافات في اسم الخاص به
  2. مرجع عمود تحديد المتعدد
  3. إجراء بحث الناس عبر بقية

 

سأضيف إلى هذا بمرور الوقت.

وإليك بعض الأحبار مفيدة وجدتها كذلك:

مرجع عمود مع مسافات في اسم الخاص به

إنشاء قائمة مخصصة مع عمود يسمى "صاحب مدونة" (المسافة بين المدونة والكاتب).

$select للإشارة أن العمود:

image

ببساطة استبدال المسافة مع "_x0020_". ونحن نرى _x0020_ في العديد من الأمثلة عبر الإنترنت ولا يختلف بقية.

إذا لم تقم بذلك, كنت مسؤولاً للحصول على رسالة خطأ مثل هذا:

التعبير “بلوق المؤلف” غير صحيح.

ما يكفي من السهل.

مرجع عمود بحث متعدد حدد

قم بإعداد:

  1. إنشاء قائمة مخصصة تسمى فئات.
  2. إضافة بعض الفئات. قمت بإضافة فئات هكذا:image
  3. إنشاء قائمة مخصصة أخرى تسمى موكبلوج وإضافة فئات كعمود قائمة متعددة التحديد (أو عمود الموقع إذا كان هذا كيف يمكنك لفة).

إضافة بعض العناصر إلى قائمة موكبلوج الخاص بك، وكنت على استعداد.

استدعاء أسلوب أياكس مسج سوف ننظر شيئا مثل هذا:

  = سيرفيرورل "/_api/web/القوائم/جيتبيتيتلي('موكبلوج')/العناصر" +
             "?$حدد عنوان =,فئات/العنوان,Blog_x0020_Author/العنوان" + 
             "&$قم بتوسيع = Blog_x0020_Author,فئات";

كنت أقول SharePoint "أعطني العنوان لجميع الفئات (فئات/العنوان). الحصول على القيم الفعلية عن العنوان قبل $قم بتوسيعجي قائمة الفئات. " (بلدي مقتبسا مريح الأرجح جميلة فضفاضة, لكن هذا كيف أنا تفسير ذلك).

إذا كنت تفعل ذلك عن طريق استخدام Fiddler لإلقاء نظرة على الإخراج وجافا سكريبت, يمكنك الحصول على شيء من هذا القبيل في المقابل:

 

image

(ما ورد أعلاه كائن JSON)

إجراء بحث الناس عبر بقية

أنا blogged حول هذا بشكل منفصل. المفتاح هو لتحديد معلمة sourceid قيمته هو GUID لمصدر المحتوى "الأشخاص المحليين". (استخدام مصادر المحتوى ليتم استدعاؤها من النطاقات وبلدي-يا-بلادي جد على عدم استدعاء كل نطاق بالنسبة لي!).

اقرأ المزيد عن ذلك هنا: http://www.mstechblogs.com/paul/?p=10385

 

</نهاية>

undefinedالاشتراك في بلادي بلوق.

اتبعني على التغريد في http://www.twitter.com/pagalvin

سريعة وسهلة: إنشاء موقع SharePoint باستخدام بقية

وهناك كثير من الموارد حول التي تبين كيفية القيام بذلك, ولكن لم أتمكن من العثور على ارتباط شامل الذهاب إلى, وها نحن.

يمكنك إنشاء موقع SharePoint باستخدام API بقية.  هنا مثال كامل خبز:

<!--
    SiteRequestForm.html: جمع المعلومات وإنشاء موقع للمستخدم.
-->

<مركز>
<الجدول>
    <tr>
        <td>اسم الموقع:</td>
        <td><الإدخال نوع= "نص" الاسم= "اسم الموقع" معرف= "اسم الموقع" /></td>
    </tr>
    <tr>
        <td colspan= "2">
            <الإدخال نوع= "يقدم" معرف= "كريتيسيتيبوتون" القيمة= "إنشاء الموقع" />
        </td>
    </tr>
</الجدول>
</مركز>

<البرنامج النصي src="../Plugins/jquery-1.11.0.min.js"></البرنامج النصي>

<البرنامج النصي>
فأر كريتيسيتيلوجيككونتينير = {

    كريتيسيتيداتا: {
            "معلمات": {
                __metadata: { "نوع": "س.ويبينفوكريتيونينفورميشن" },
                عنوان Url: "Paultest1",
                العنوان: "Paultest1",
                وصف: "إنشاء بقية ويب قبل Paul!",
                اللغة: 1033,
                ويبتيمبلاتي: "sts",
                أوسيونيقويبيرميسيونس: كاذبة
            }
    },

    كريتيسيتي: الدالة () {

        jQuery.support.cors = صحيح;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").فال();
        
        $.أجاكس({
            عنوان url: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            الأسلوب: "وظيفة",

            رؤوس: {
                "قبول": "التطبيق/json; odata = مطول",
                "نوع المحتوى": "التطبيق/json;odata = مطول",
                "X-ريكويستديجيست": $("#__REQUESTDIGEST").فال()
            },

            البيانات: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            النجاح: الدالة () { تنبيه("النجاح"); },
            خطأ: الدالة () { تنبيه("خطأ"); }

        });
    },

    ويريوبفورم: الدالة () {
        $("#CreateSiteButton").انقر فوق(الدالة () {
            تنبيه("على وشك أن محاولة لإنشاء الموقع.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</البرنامج النصي>

عندما تكون ناجحة, يمكنك الحصول على حزمة JSON في رد مثل هذا:

image

بلدي الأفكار الرئيسية وتعلمه من هذا التضمين:

  • ويستخدم هذا النهج مسج.  في حالتي, مكتبة jQuery بلدي يقع في ".../الإضافات. "  سوف تحتاج إلى تغيير ذلك للإشارة إلى موقع JQ المفضلة الخاصة بك.
  • يمكنك نسخ ولصق قصاصة ذلك كله في جزء ويب محرر المحتوى على صفحة، وينبغي لها أن تعمل على ما يرام.  سوف تحتاج إلى تغيير نقطة النهاية لاستدعاء API وتأكد من الرجوع JQ بشكل صحيح.
  • عنوان url الخاص بالنسبة إلى نقطة النهاية API الخاص بك.  في حالتي, فإنه يتم إنشاء المواقع الفرعية تحت https://bigapplesharepoint.com
  • لا تحتاج إلى توفير محتوى-طول. بعض التدوينات و MSDN الوثيقة يعني أن لديك, ولكن حدث لي تلقائياً, التي افترض أن يتم معالجة بواسطة استدعاء.ajax $ نفسها.
  • مطلوب هذا الخط من أجل تجنب رد فعل "المحرمة": "X-ريكويستديجيست": $("#__REQUESTDIGEST").فال().  وهناك طرق أخرى للقيام بذلك, ولكن هذا لطيف جداً.  لقد فقدت الرابط للمدونة التي قدمت هذا الاختصار.  ح/تي لك, مدون غامضة!

حظاً سعيداً وآمل أن يساعد هذا شخص.

</نهاية>

undefinedالاشتراك في بلادي بلوق.

اتبعني على التغريد في http://www.twitter.com/pagalvin

سريعة وبسيطة: SharePoint بقية المكالمة إرجاع فقط 100 سجلات

لقد تم العمل على موقع ويب التي يواجهها عامة للممارسة SharePoint بلدي هنا في نيويورك ويستخدم الكثير من المكالمات جافا سكريبت والباقي لإظهار المحتوى.

أثناء تطوير الخطوط الرئيسية, إنشاء إحدى وحدات dataset صغيرة مع فقط 10 أو حتى انسحبت الصفوف في قائمة مخصصة، ويدعو بقية بلدي من هناك.  مرة صدم أعلى القائمة إلى صفوف مئات قليلة من البيانات لاختبار للنمو المتوقع, لقد وجدت أنه تم الحصول بالضبط 100 الصفوف التي يتم إرجاعها إلى الوراء في بلدي يدعو بقية.

وهذا شيء بسيط جداً بعنوان.  في حالتي (وأعتقد أن في معظم الحالات), شكل افتراضي بقية تدعو إلى SharePoint (وربما كمعيار صناعة?) عودة 100 الصفوف.  لإرجاع أكثر من الافتراضي, استخدم المعلمة $top على المكالمة, كما هو الحال في:

الحصول على/Insights Dev/_api/web/lists/GetByTitle('موكبلوج')/العناصر?$حدد معرف =,العنوان,فئات/العنوان,Blog_x0020_Author/العنوان,داتيبوبليشيد,بلوجسوماري&$قم بتوسيع = Blog_x0020_Author,فئات&$التصفية =&$أعلى = 9999

وقد اخترت 9999 وفي هذه الحالة منذ ذلك الحين وأنا أعلم أن جرووثويسي, لن يكون هناك أكثر من 200 أو حتى إضافة صفوف إلى هذه القائمة في سنة.  إذا فإنه يصبح صعب المراس, يمكن أن ننفذ بعض الترحيل على الطريق.

</نهاية>

undefinedالاشتراك في بلادي بلوق.

اتبعني على التغريد في http://www.twitter.com/pagalvin