खोज…


टिप्पणियों

REST सेवा समापन बिंदु URL

REST क्लाइंट एक्सेस API को पहले SharePoint 2010 में पेश किया गया था, लेकिन SharePoint 2013 में इसका बहुत विस्तार किया गया था। SharePoint 2010 में REST API को List_ata वेब सेवा के माध्यम से /_vti_bin/ListData.svc url पर एक्सेस किया गया है। SharePoint 2013 ने /_api/lists/ और /_api/web एंडपॉइंट URL पेश किए, जो थोड़ा अलग व्यवहार करते हैं।

उपरोक्त समापन बिंदु URL को http://server/site से पहले होना चाहिए जहां server के नाम का प्रतिनिधित्व करता है, और site विशिष्ट साइट के नाम या पथ का प्रतिनिधित्व करती है।

उदाहरण के लिए URL ... SharePoint 2010 SharePoint 2013
सूची प्राप्त करना: /_vti_bin/ListData.svc/ListName /_api/lists('ListGuid')
एक आइटम लाना: /_vti_bin/ListData.svc/ListName(1) /_api/lists('ListGuid')/items(1)
वेब प्राप्त करना: (कोई समतुल्य नहीं) /_api/web

सूची और सूची आइटम तक पहुंचने में अंतर के बावजूद, उन परिणामों के साथ काम करना दोनों संस्करणों में बहुत समान है।

ध्यान दें कि ListData.svc सेवा अभी भी SharePoint 2013 में बैकवर्ड संगतता के लिए उपलब्ध है।

अन्य अनुरोध भेजना

REST अनुरोध को एक मूल जावास्क्रिप्ट XMLHttpRequest या jQuery AJAX आवरण निर्माण के माध्यम से प्रस्तुत किया जा सकता है।

XMLHttpRequest सिंटैक्स

var xhr = new XMLHttpRequest();
xhr.open(verb, url, true);
xhr.setRequestHeader("Content-Type","application/json");
xhr.send(data);

jQuery AJAX सिंटैक्स

$.ajax({
    method: verb,
    url: url,
    headers: { "Content-Type":"application/json" },
    data: data
});

AJAX के माध्यम से अनुरोध भेजने के बारे में अधिक जानकारी के लिए, जावास्क्रिप्ट AJAX प्रलेखन देखें

सूचियों के साथ काम करना

सूची आइटम प्राप्त करना

यह उदाहरण दिखाता है कि सभी सूची आइटम कैसे प्राप्त करें और उनके माध्यम से पुनरावृति करें। आप परिणामों की एक निश्चित संख्या का अनुरोध करने के लिए top पैरामीटर का उपयोग कर सकते हैं। आप कुछ क्षेत्रों ( $select=id, Title, uri ) का select करने के लिए select पैरामीटर का भी उपयोग कर सकते हैं।

जावास्क्रिप्ट

function GetListItems(){
    $.ajax({
        url: "../_api/web/lists/getbytitle('List Title')/items?$top=50"
        contentType: "application/json;odata=verbose",
        method: "GET",
        headers: { "accept": "application/json;odata=verbose" },
        success: function (data) {
            $.each(data.d.results, function(index,item){
                //use item to access the individual list item
                console.log(item.Id);
            });
        },
        error: function(error){
            console.log(error);
        }
    });
    }

एक व्यक्तिगत सूची आइटम प्राप्त करना

जावास्क्रिप्ट

function GetListItem(){
    $.ajax({
        url: "../_api/web/lists/getbytitle('List Title')/items(1)",
        contentType: "application/json;odata=verbose",
        method: "GET",
        headers: { "accept": "application/json;odata=verbose" },
        success: function (data) {
            console.log(data.d.Id);
        },
        error: function(error){
            console.log(error);
        }
    });
    }

लुकअप कॉलम के साथ सूची आइटम प्राप्त करें

कभी-कभी, आपके पास एक सूची संरचना हो सकती है जो इस तरह दिखती है:

पशु सूची तालिका

नाम प्रकार विवरण
शीर्षक स्ट्रिंग (पाठ) जानवर का नाम
आयु संख्या जानवर कितना पुराना है
मूल्य मुद्रा पशु का मूल्य
प्रकार लुकअप (पशु प्रकार तालिका) लुकअप फ़ील्ड (पशु प्रकार तालिका से विकल्पों को छोड़ देता है)

पशु प्रकार तालिका

नाम प्रकार विवरण
शीर्षक स्ट्रिंग (पाठ) प्रजातियों / जानवरों के प्रकार का नाम (उदा। सुअर)
NumLegs संख्या जानवर पर पैरों की संख्या

शायद सबसे गंभीर उदाहरण नहीं है, लेकिन यहां समस्या अभी भी मान्य है। जब आप SharePoint सूची से मान प्राप्त करने के लिए सामान्य अनुरोध का उपयोग करते हैं, तो पशु के Type के लिए, आपको केवल JSON प्रतिक्रिया में TypeId नामक फ़ील्ड वापस मिलेगा। केवल एक AJAX कॉल में इन मदों का विस्तार करने के लिए, URL पैरामीटर में कुछ अतिरिक्त मार्कअप आवश्यक है।

यह उदाहरण केवल लुकअप कॉलम से भी अधिक पर लागू होता है। जब आप People/Groups कॉलम का उपयोग कर रहे होते हैं, तो वे अनिवार्य रूप से केवल लुकअप के रूप में अच्छी तरह से होते हैं, इसलिए आप Title , EMail और अन्य जैसे आइटम आसानी से खींच सकते हैं।

उदाहरण कोड

महत्वपूर्ण नोट : जब आप उन फ़ील्ड को परिभाषित करते हैं जिन्हें आप लुकअप कॉलम से वापस प्राप्त करना चाहते हैं, तो आपको मूल तालिका में लुकअप फ़ील्ड के नाम के साथ फ़ील्ड का नाम उपसर्ग करना होगा। उदाहरण के लिए, यदि आप लुकअप कॉलम से NumLegs विशेषता वापस प्राप्त करना चाहते हैं, तो आपको Type/NumLegs करना होगा।

जावास्क्रिप्ट

// webUrl: The url of the site (ex. https://www.contoso.com/sites/animals)
// listTitle: The name of the list you want to query
// selectFields: the specific fields you want to get back
// expandFields: the name of the fields that need to be pulled from lookup tables
// callback: the name of the callback function on success
function getItems(webUrl,listTitle,selectFields, expandFields, callback){
    var endpointUrl = webUrl + "/_api/web/lists/getbytitle('" + listTitle + "')/items";
    endpointUrl+= '?$select=' + selectFields.join(",");
    endpointUrl+= '&$expand=' + expandFields.join(",");
    return executeRequest(endpointUrl,'GET', callback);
}

function executeRequest(url,method,callback,headers,payload) 
{
    if (typeof headers == 'undefined'){
        headers = {};
    }
    headers["Accept"] = "application/json;odata=verbose";
    if(method == "POST") {
        headers["X-RequestDigest"] = $("#__REQUESTDIGEST").val();
    }   

    var ajaxOptions = 
    {       
    url: url,   
    type: method,  
    contentType: "application/json;odata=verbose",
    headers: headers,
    success: function (data) { callback(data) }
    };
    if(method == "POST") {
    ajaxOptions.data = JSON.stringify(payload);
    }  

    return $.ajax(ajaxOptions);
}

// Setup the ajax request by setting all of the arguments to the getItems function
function getAnimals() {
    var url = "https://www.contoso.com/sites/animals";
    var listTitle = "AnimalListing";
    
    var selectFields = [
        "Title",
        "Age",
        "Value",
        "Type/Title",
        "Type/NumLegs"
    ];

    var expandFields = [
        "Type/Title",
        "Type/NumLegs"
    ];

    getItems(url, listTitle, selectFields, expandFields, processAnimals);
}

// Callback function
// data: returns the data given by SharePoint
function processAnimals(data) {
    console.log(data);
    // Process data here
}

// Start the entire process
getAnimals();

बहुवैकल्पिक लुकअप फ़ील्ड में चयन जोड़ना

यह उदाहरण मानता है कि आपके लुकअप कॉलम का नाम MultiLookupColumnName और आप IDs 1 और 2 के साथ आइटम देखने के लिए अपना बहु-लुकअप फ़ील्ड सेट करना चाहते हैं।

JQuery AJAX का उपयोग करना

2010
var listName = "YourListName";
var lookupList = "LookupListName";
var idOfItemToUpdate = 1;
var url = "/server/site/_vti_bin/ListData.svc/"+listName+"("+idOfItemToUpdate+")"; 
var data = JSON.stringify({
    MultiLookupColumnName:[
        {__metadata:{uri:"http://yoursiteurl/_vti_bin/ListData.svc/"+lookupList+"(1)"}},
        {__metadata:{uri:"http://yoursiteurl/_vti_bin/ListData.svc/"+lookupList+"(2)"}}
    ]
});
$.ajax({
    method: 'POST',
    url: url,
    contentType: 'application/json',
    headers: {
      "X-HTTP-Method" : "MERGE",
      "If-Match" : "*"
    },
    data: data
});
2013
var listGuid = "id-of-list-to-update"; // use list GUID here
var lookupGuid = "id-of-lookup-list"; // use lookup list GUID here
var idOfItemToUpdate = 1;
var url = "/server/site/_api/lists('"+ listGuid + "')/items("+ idOfItemToUpdate + ")";
var data = JSON.stringify({
    MultiLookupColumnName:[
        {__metadata:{uri:"http://yoursiteurl/_api/lists('" + lookupGuid + "')/items(1)"}},
        {__metadata:{uri:"http://yoursiteurl/_api/lists('" + lookupGuid + "')/items(2)"}}
    ]
});
$.ajax({
    method: 'POST',
    url: url,
    contentType: 'application/json',
    headers: {
      "X-HTTP-Method" : "MERGE",
      "If-Match" : "*"
    },
    data: data
});

XMLHttpRequest का उपयोग करना

2010
var listName = "YourListName";
var lookupList = "LookupListName";
var idOfItemToUpdate = 1;
var url = "/server/site/_vti_bin/ListData.svc/YourListName("+idOfItemToUpdate+")";
var data = JSON.stringify({
    MultiLookupColumnName:[
       {__metadata:{uri:"http://yoursiteurl/_vti_bin/ListData.svc/"+lookupList+"(1)"}},
        {__metadata:{uri:"http://yoursiteurl/_vti_bin/ListData.svc/"+lookupList+"(2)"}}
    ]
});
var xhr = new XMLHttpRequest();
xhr.open("POST",url,true);
xhr.setRequestHeader("X-HTTP-Method", "MERGE");
xhr.setRequestHeader("If-Match", "*");
xhr.setRequestHeader("Content-Type","application/json");
xhr.send(data);
2013
var listGuid = "id-of-list-to-update";
var lookupGuid = "id-of-lookup-list";
var idOfItemToUpdate = 1;
var url = "/server/site/_api/lists('"+ listGuid + "')/items("+ idOfItemToUpdate + ")"; 
var data = JSON.stringify({
    MultiLookupColumnName:[
        {__metadata:{uri:"http://yoursiteurl/_api/lists('" + lookupGuid + "')/items(1)"}},
        {__metadata:{uri:"http://yoursiteurl/_api/lists('" + lookupGuid + "')/items(2)"}}
    ]
});
var xhr = new XMLHttpRequest();
xhr.open("POST",url,true);
xhr.setRequestHeader("X-HTTP-Method", "MERGE");
xhr.setRequestHeader("If-Match", "*");
xhr.setRequestHeader("Content-Type","application/json");
xhr.send(data);

पेजिंग सूची आइटम एक क्वेरी से वापस आ गए

REST का उपयोग करके पेजिंग अनुकरण करने के लिए आप निम्नलिखित कार्य कर सकते हैं:

  1. का प्रयोग करें $skip=n पैरामीटर पहले छोड़ n के अनुसार प्रविष्टियों $orderby पैरामीटर

  2. $orderby और $skip मापदंडों के अनुसार शीर्ष n प्रविष्टियों को वापस करने के लिए $top=n पैरामीटर का उपयोग करें।

var endpointUrl = "/_api/lists('guid')/items"; // SP2010: "/_vti_bin/ListData.svc/ListName";
$.getJSON(
    endpointUrl + "?$orderby=Id&$top=1000",
    function(data){
        processData(data); // you can do something with the results here
        var count = data.d.results.length;
        getNextBatch(count, processData, onComplete); // fetch next page 
    }
);

function getNextBatch(totalSoFar, processResults, onCompleteCallback){
    $.getJSON(
        endpointUrl + "?$orderby=Id&$skip="+totalSoFar+"&$top=1000",
        function(data){
            var count = data.d.results.length;
            if(count > 0){
                processResults(data); // do something with results
                getNextBatch(totalSoFar+count, callback); // fetch next page
            }else{
                onCompleteCallback();
            }
        }
    );
}

SharePoint सूची में नए बनाए गए आइटम की एक ID प्राप्त करें

यह उदाहरण दिखाता है कि SharePoint REST API का उपयोग करके किसी नए बनाए गए आइटम की ID कैसे प्राप्त करें।

ध्यान दें :

listName - इस चर में आपकी सूची का नाम है।

newItemBody - यह सूची में नए आइटम जोड़ने के लिए आपका अनुरोध निकाय होगा।

उदा। var newItemBody = {__metadata: {'type': 'SP.Data.MyListNameItem'}, शीर्षक: 'कुछ शीर्षक मान'};

function CreateListItemWithDetails(listName, newItemBody) {

    var item = newItemBody;
    return $.ajax({
        url: _spPageContextInfo.siteAbsoluteUrl + "/_api/web/lists/getbytitle('" + listName + "')/items",
        type: "POST",
        contentType: "application/json;odata=verbose",
        data: JSON.stringify(item),
        headers: {
            "Accept": "application/json;odata=verbose",
            "X-RequestDigest": $("#__REQUESTDIGEST").val(),
            "content-Type": "application/json;odata=verbose"
        }

    });
}

CreateListItemWithDetails(listName, newItemBody)
    .then(function(data){
        //success callback
        var NewlyCreatedItemId = data.d.ID;
    }, function(data){
        //failure callback
    });

SharePoint 2010 REST इंटरफ़ेस का उपयोग करके CRUD ऑपरेशन कैसे करें

सृजन करना

REST के माध्यम से क्रिएट ऑपरेशन करने के लिए, आपको निम्नलिखित क्रियाएं करनी होंगी:

POST क्रिया का उपयोग करके HTTP अनुरोध बनाएँ। उस सूची के सेवा URL का उपयोग करें, जिसे आप POST के लक्ष्य के रूप में एक इकाई जोड़ना चाहते हैं। सामग्री प्रकार को application/json सेट करें। JSON ऑब्जेक्ट्स को एक स्ट्रिंग के रूप में आपकी नई सूची आइटम का प्रतिनिधित्व करते हैं, और इस मान को अनुरोध बॉडी जावास्क्रिप्ट उदाहरण में जोड़ें:

function createListItem(webUrl,listName, itemProperties, success, failure) {

    $.ajax({
        url: webUrl + "/_vti_bin/listdata.svc/" + listName,
        type: "POST",
        processData: false,
        contentType: "application/json;odata=verbose",
        data: JSON.stringify(itemProperties),
        headers: {
            "Accept": "application/json;odata=verbose"
        },
        success: function (data) {
            success(data.d);
        },
        error: function (data) {
            failure(data.responseJSON.error);
        }
    });
}

प्रयोग

var taskProperties = {
    'TaskName': 'Order Approval',
    'AssignedToId': 12
};

createListItem('https://contoso.sharepoint.com/project/','Tasks',taskProperties,function(task){
    console.log('Task' + task.TaskName + ' has been created'); 
  },
  function(error){
    console.log(JSON.stringify(error));
  }
);

पढ़ें

REST के माध्यम से रीड ऑपरेशन करने के लिए, आपको निम्नलिखित क्रियाएं करनी होंगी:

GET क्रिया का उपयोग करके एक HTTP अनुरोध बनाएँ। उस सूची आइटम के सेवा URL का उपयोग करें, जिसे आप GET के लिए लक्ष्य के रूप में एक इकाई जोड़ना चाहते हैं। सामग्री प्रकार को application/json सेट करें। जावास्क्रिप्ट उदाहरण:

function getListItemById(webUrl,listName, itemId, success, failure) {
    var url = webUrl + "/_vti_bin/listdata.svc/" + listName + "(" + itemId + ")";
    $.ajax({
        url: url,
        method: "GET",
        headers: { "Accept": "application/json; odata=verbose" },
        success: function (data) {
            success(data.d);
        },
        error: function (data) {
            failure(data.responseJSON.error);
        }
    });
}

प्रयोग

getListItemById('https://contoso.sharepoint.com/project/','Tasks',2,function(taskItem){
    console.log(taskItem.TaskName); 
  },
  function(error){
    console.log(JSON.stringify(error));
  }
);

अपडेट करें

मौजूदा इकाई को अपडेट करने के लिए, आपको निम्नलिखित क्रियाएं करनी होंगी:

POST क्रिया का उपयोग करके एक HTTP अनुरोध बनाएँ। MERGE मान के साथ X-HTTP-Method हैडर जोड़ें। उस सूची आइटम के सेवा URL का उपयोग करें जिसे आप POST के लक्ष्य के रूप में अद्यतन करना चाहते हैं, इकाई के मूल ETag, या * के मान के साथ एक If-Match शीर्षलेख जोड़ें। जावास्क्रिप्ट उदाहरण:

function updateListItem(webUrl,listName,itemId,itemProperties,success, failure)
{
   getListItemById(webUrl,listName,itemId,function(item){

      $.ajax({
         type: 'POST',
         url: item.__metadata.uri,
         contentType: 'application/json',
         processData: false,
         headers: {
                "Accept": "application/json;odata=verbose",
                "X-HTTP-Method": "MERGE",
                "If-Match": item.__metadata.etag
         },
         data: Sys.Serialization.JavaScriptSerializer.serialize(itemProperties),
         success: function (data) {
                success(data);
         },
         error: function (data) {
                failure(data);
         }
      });

   },
   function(error){
       failure(error);
   });

}

प्रयोग

var taskProperties = {
    'TaskName': 'Approval',
    'AssignedToId': 12  
};


updateListItem('https://contoso.sharepoint.com/project/','Tasks',2,taskProperties,function(item){
    console.log('Task has been updated'); 
  },
  function(error){
    console.log(JSON.stringify(error));
  }
);

हटाएं

किसी इकाई को हटाने के लिए, आपको निम्नलिखित क्रियाएं करनी होंगी:

POST क्रिया का उपयोग करके HTTP अनुरोध बनाएँ। DELETE मान के साथ X-HTTP-Method हैडर जोड़ें। उस सूची आइटम के सेवा URL का उपयोग करें, जिसे आप POST के लक्ष्य के रूप में अपडेट करना चाहते हैं, इकाई के मूल ETag के मान के साथ एक इफ़ If-Match हेडर जोड़ें। जावास्क्रिप्ट उदाहरण:

function deleteListItem(webUrl, listName, itemId, success, failure) {
    getListItemById(webUrl,listName,itemId,function(item){
        $.ajax({
            url: item.__metadata.uri,
            type: "POST",
            headers: {
                "Accept": "application/json;odata=verbose",
                "X-Http-Method": "DELETE",
                "If-Match": item.__metadata.etag
            },
            success: function (data) {
                success();
            },
            error: function (data) {
                failure(data.responseJSON.error);
            }
        });
    },
   function (error) {
       failure(error);
   });
}

प्रयोग

deleteListItem('https://contoso.sharepoint.com/project/','Tasks',3,function(){
    console.log('Task has been deleted'); 
  },
  function(error){
    console.log(JSON.stringify(error));
  }
);


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow