वर्ग पुरालेख: बाकी

HTTP 406 SharePoint बाकी अंत अंक के खिलाफ कोणीय $http.get का उपयोग करते समय त्रुटि

अद्यतन: मार्क विज्ञापन ndersson जानकारी के इस महान टुकड़ा बाहर की ओर इशारा किया: http://blogs.office.com/2014/08/13/json-light-support-rest-sharepoint-api-released/. कि बहुत कुछ बताते हैं :).

कि एक ब्लॉग पोस्ट के सबसे खराब शीर्षक हो सकता है कभी! Anyhoo.

मैं आमतौर पर एक O365 इंस्टेंस के खिलाफ मेरी प्रोटोटाइप के सभी करते हैं. मैं मेरी व्यक्तिगत उदाहरण है इतना है कि मैं किसी और को प्रभावित करने के बारे में चिंता करने की जरूरत नहीं है. एक अलग रूप में-जब हम काई-के साथ हमारे लैपटॉप पर आभासी मशीनों के चारों ओर बढ़ाया कॉल SQL Server याद, IIS, हायपर-V बनाम तय करने. VMWare? Anyhoo...

मैं एक app Angular करता है इस वातावरण में का उपयोग कर विकसित किया था, अन्य बातों के अलावा, यह:

$http.get(serverUrl)
.सफलता(समारोह(डेटा, स्थिति, शीर्ष लेख, config) {

var getLinksResponse = डेटा;

getLinksResponse.value.forEach(समारोह(theResult) {

// और इतने पर और इतने फेन

यह बस ठीक दो विभिन्न SharePoint ऑनलाइन वातावरण में काम कर रहा था. हालांकि, जब मेरे सहयोगी यह एक Cloudshare इंस्टेंस के लिए रखी, वह हो रही थी एक HTTP 406 त्रुटि (जो पहली बार मैं कभी मिला है कि एक था, तो.. याय, मेरा अंदाज़ा है). हम अनुसंधान के एक सा था और देखा कि "स्वीकार" शीर्ष लेख बंद था. SharePoint ऑनलाइन के साथ पूरी तरह से खुश था:

स्वीकार करें: आवेदन/json

Cloudshare आवृत्ति है लेकिन (जो प्रेम पर सपा है, एक वर्चुअल सर्वर में मेजबानी की) क्लासिक चाहता था "odata वाचाल =" में रूप में अच्छी तरह से जोड़ा गया:

स्वीकार करें: आवेदन/json;odata वाचाल =

कि ठीक करने के लिए, हम इस तरह के रूप में हैडर जोड़ा:

var config = {शीर्ष लेख: {
'स्वीकार करें': ' आवेदन/json;odata वाचाल ='
}
};

$http.get(serverUrl,config)
.सफलता(समारोह(डेटा, स्थिति, शीर्ष लेख, config) {

var getLinksResponse = डेटा;

getLinksResponse.value.forEach(समारोह(theResult) {

// और इतने पर और इतने फेन

कि के छुटकारा मिल गया 406, लेकिन यह भी प्रतिक्रिया का स्वरूप बदल गया. इसे और अधिक था.. वाचाल. (haha!) अधिक परिवर्तन आवश्यक थे और यहाँ अंतिम परिणाम है:

var config = {शीर्ष लेख: {
'स्वीकार करें': ' आवेदन/json;odata वाचाल ='
}
};

$http.get(serverUrl,config)
.सफलता(समारोह(डेटा, स्थिति, शीर्ष लेख, config) {

var getLinksResponse = डेटा;

getLinksResponse.d.results.forEach(समारोह(theResult) {

// और इतने पर और इतने फेन

यह केवल में बदल गया एक 30 हमारे लिए मिनट समस्या, तो हम बाहर lucked. उम्मीद है कि किसी को यह उपयोगी पाता.

</अंत>

कैसे लोगों को एक खोज स्कोप के रूप में निर्दिष्ट करने के लिए / सामग्री स्रोत SharePoint का उपयोग करना 2013 बाकी एपीआई

मैं SharePoint के साथ काम करने के लिए कारण था 2013 खोज एपीआई के माध्यम से पहली बार के लिए आराम. मैं लोगों के लिए खोज करना चाहता था, नहीं दस्तावेजों. चाबी यहाँ है कि सीखने आप इसका GUID के द्वारा सामग्री स्रोत निर्दिष्ट करें (या कम से कम इस मामले में). निम्नलिखित jQuery स्निपेट दिखाता है कैसे:

    loadExpertsAsync: समारोह() {

        jQuery.support.cors = सच है;

        $.ajax({
            यूआरएल: यह.CreateFullApiUrl() +
                "?querytext 'पोर्टल' =&sourceid 'b09a7990-05ea-4af9-81ef-edfab16c4e31' =" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,कौशल,AboutMe,रुचियाँ,पद नाम,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&rowlimit = 99",
            विधि: "हो जाओ",
            शीर्ष लेख: { "स्वीकार करें": "आवेदन/json; odata वाचाल =" },
            कैश: झूठी,
            सफलता: समारोह (परिणाम) {

मेरे मामले में, मैं एपीआई के खिलाफ 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 वास्तव में एक तरह की स्थायी बात सपा के साथ हो सकता, 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_" के साथ बदलें. हम internets भर में कई उदाहरणों में _x0020_ देखें और बाकी कोई अलग है.

यदि आप ऐसा नहीं करते, तुम इस तरह एक त्रुटि संदेश प्राप्त करने के लिए उत्तरदायी हो:

अभिव्यक्ति “ब्लॉग लेखक” मान्य नहीं है.

काफी आसान है.

एक बहु चयन लुकअप स्तंभ संदर्भ

सेट अप:

  1. नामांकित श्रेणियाँ एक कस्टम सूची बनाएँ.
  2. कुछ श्रेणियाँ जोड़ें. मैं श्रेणियाँ thusly जोड़ा:image
  3. MockBlog नामक एक और कस्टम सूची बनाएँ और श्रेणियों के रूप में एक बहु चयन सूची स्तंभ जोड़ें (या आप कैसे रोल अगर उस साइट स्तंभ है).

आपकी Mockblog सूची में कुछ आइटम जोड़ें और तुम तैयार हो.

JQuery का उपयोग कर एक Ajax शैली फोन कुछ इस तरह दिखेगा:

serverUrl   = "/_api/वेब/सूचियाँ/GetByTitle('MockBlog')/आइटम" +
             "?$का चयन करें शीर्षक =,श्रेणियाँ/शीर्षक,Blog_x0020_Author/शीर्षक" + 
             "&$विस्तृत करें = Blog_x0020_Author,श्रेणियाँ";

हम "मेरे शीर्षक सभी श्रेणियों के लिए दे SharePoint बता रहे हैं (श्रेणियाँ/शीर्षक). वास्तविक मान के लिए जाओ शीर्षक द्वारा $विस्तृत करेंआईएनजी श्रेणियाँ सूची." (मेरी शोकहारा paraphrasing शायद बहुत ढीला है, लेकिन यह कैसे मैं यह व्याख्या कर रहा हूँ).

अगर तुम यह जावास्क्रिप्ट और सारंगी पर आउटपुट देखने के लिए का उपयोग कर के माध्यम से कर रहे हैं, तुम कुछ इस तरह बदले में मिल:

 

image

(इसके बाद के संस्करण एक JSON ऑब्जेक्ट है)

बाकी के जरिए लोगों को खोजें

मैं इस बारे में blogged अलग से. स्थानीय लोगों को सामग्री स्रोत का GUID जिसका मूल्य है एक sourceid पैरामीटर निर्दिष्ट करने के लिए कुंजी है. (Scopes कहा जा करने के लिए सामग्री स्रोतों का इस्तेमाल किया और यह सब कुछ मेरे लिए एक गुंजाइश कॉल करने के लिए मेरी-ओह-मेरा इतना मुश्किल नहीं है!).

और अधिक पढ़ें इसके बारे में यहाँ: http://www.mstechblogs.com/paul/?p=10385

 

</अंत>

undefinedमेरे ब्लॉग के लिए सदस्यता लें.

मेरे चहचहाना पर का पालन करें http://www.twitter.com/pagalvin

त्वरित और आसान: एक SharePoint साइट के आराम का उपयोग कर बनाएँ

कैसे यह करने के लिए उस शो के आसपास संसाधनों का एक बहुत कुछ कर रहे हैं, लेकिन मैं नहीं मिल सकता है एक व्यापक जाने के लिए लिंक, तो यहाँ हम कर रहे हैं.

आप किसी SharePoint साइट में बाकी एपीआई का उपयोग कर बना सकते हैं।  यहाँ है एक पूरी तरह से पके हुए उदाहरण:

<!--
    SiteRequestForm.html: जानकारी एकत्र और उपयोगकर्ता के लिए एक साइट बनाएँ.
-->

<केंद्र>
<तालिका>
    <टी. आर.>
        <td>साइट का नाम:</td>
        <td><इनपुट प्रकार"पाठ =" नाम"SiteName =" आईडी"SiteName =" /></td>
    </टी. आर.>
    <टी. आर.>
        <td colspan= "2">
            <इनपुट प्रकार= "जमा करें" आईडी"CreateSiteButton =" मान= "साइट बनाएँ" />
        </td>
    </टी. आर.>
</तालिका>
</केंद्र>

<स्क्रिप्ट एसआरसी="../Plugins/jquery-1.11.0.min.js"></स्क्रिप्ट>

<स्क्रिप्ट>
var CreateSiteLogicContainer = {

    createSiteData: {
            "पैरामीटर": {
                __metadata: { "प्रकार": 'सपाWebInfoCreationInformation" },
                यूआरएल: "Paultest1",
                शीर्षक: "Paultest1",
                विवरण: "बाकी-बनाया वेब द्वारा पॉल!",
                भाषा: 1033,
                WebTemplate: "अनुसूचित जनजातियों",
                UseUniquePermissions: झूठी
            }
    },

    createSite: समारोह () {

        jQuery.support.cors = सच है;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").वैल();
        
        $.ajax({
            यूआरएल: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            विधि: 'पोस्ट",

            शीर्ष लेख: {
                "स्वीकार करते हैं": आवेदन/json"; odata वाचाल =",
                "सामग्री-प्रकार": आवेदन/json";odata वाचाल =",
                "एक्स-RequestDigest": $("#__REQUESTDIGEST").वैल()
            },

            डेटा: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            सफलता: समारोह () { चेतावनी("सफलता"); },
            त्रुटि: समारोह () { चेतावनी("त्रुटि"); }

        });
    },

    wireUpForm: समारोह () {
        $("#CreateSiteButton").क्लिक करें(समारोह () {
            चेतावनी("के बारे में प्रयास करें और साइट बनाने के लिए।");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</स्क्रिप्ट>

जब सफल, आप इस तरह की प्रतिक्रिया में एक JSON पैकेट प्राप्त:

image

मेरे मुख्य विचारों और इस शामिल से सीखों:

  • इस दृष्टिकोण का उपयोग करता है jQuery.  मेरे मामले में, मेरे jQuery पुस्तकालय में स्थित है "../ plugins. "  आप जो अपने पसंदीदा JQ स्थान को इंगित करने के लिए परिवर्तित करने के लिए चाहता हूँ.
  • आप की प्रतिलिपि बनाएँ और एक पृष्ठ पर सामग्री संपादक वेब पार्ट में उस पूरे टुकड़ा चिपकाएँ कर सकते हैं और यह काम करना चाहिए तो बस ठीक है।  आप API कॉल के अंत बिंदु परिवर्तित करें और सुनिश्चित करें कि आप सही ढंग से JQ को संदर्भित करने के लिए चाहता हूँ.
  • URL अपने एपीआई समाप्तिबिंदु के सापेक्ष है।  मेरे मामले में, यह उप-साइटों के नीचे पैदा कर रही है https://bigapplesharepoint.com
  • तुम एक सामग्री लंबाई प्रदान करने की आवश्यकता नहीं. कुछ ब्लॉग पोस्ट और MSDN दस्तावेज़ का तात्पर्य है कि आप, लेकिन मेरे लिए स्वचालित रूप से हुआ, जो मुझे लगता है $.ajax कॉल द्वारा खुद को संभाला जा रहा है.
  • इस लाइन से बचने के एक "मना" प्रतिसाद करने के लिए आवश्यक है: "एक्स-RequestDigest": $("#__REQUESTDIGEST").वैल().  यह करने के लिए अन्य तरीके हैं, लेकिन यह बहुत अच्छा है।  मैं ब्लॉग है कि यह शॉर्टकट प्रदान करने के लिए लिंक खो दिया है।  एच/टी तुम करने के लिए, रहस्यमय ब्लॉगर!

गुड लक और आशा है कि यह किसी को मदद मिलती है.

</अंत>

undefinedमेरे ब्लॉग के लिए सदस्यता लें.

मेरे चहचहाना पर का पालन करें http://www.twitter.com/pagalvin

त्वरित और आसान: SharePoint बाकी केवल रिटर्न कॉल 100 रिकॉर्ड्स

मैं एक सार्वजनिक सामना करना पड़ रहा वेब साइट पर मेरे SharePoint अभ्यास में यहाँ के लिए काम कर रहा है न्यू यार्क और यह जावास्क्रिप्ट और बाकी कॉल्स का एक बहुत का उपयोग करता है सामग्री दिखाएँ.

Mainline विकास के दौरान, मैं बस के साथ एक छोटे डाटासेट बनाएँ 10 या तो में कोई कस्टम सूची और बाकी कॉल मेरे सभी पंक्तियाँ वहाँ से खींच लिया।  एक बार मैं कुछ सौ पंक्तियों के डेटा के लिए अनुमानित वृद्धि दर का परीक्षण करने के लिए है के लिए सूची अप टकरा गया, मैंने पाया कि मैं ठीक हो रही थी 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