sharepoint
अन्य सेवाएँ
खोज…
टिप्पणियों
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 का उपयोग करना
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
});
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 का उपयोग करना
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);
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 का उपयोग करके पेजिंग अनुकरण करने के लिए आप निम्नलिखित कार्य कर सकते हैं:
का प्रयोग करें
$skip=n
पैरामीटर पहले छोड़n
के अनुसार प्रविष्टियों$orderby
पैरामीटर$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));
}
);