Извлекать данные из REST API разделяющей точки списка в одном вызове Ajax
Как мы можем получить данные из нескольких списков, используя REST API sharepoint за один вызов? Я: хочу получить данные, а также хочу использовать несколько списков для поиска данных тоже. Можно ли сделать это за один вызов, если "ДА", то как и если "НЕТ", то каковы лучшие решения для получения данных?
Заранее спасибо..
3 ответа
Прежде всего, SharePoint REST не поддерживает пакетную обработку запросов, как CSOM. Это делает невозможным совершение нескольких вызовов REST за одну поездку в оба конца.
Хорошая новость в том, что в соответствии с бизнес-планом Office 365 эта функция:
Пакет CSOM для приложений для SharePoint
Эта функция позволяет поддерживать пакетные запросы в службах OData REST в SharePoint. Это позволяет приложениям совершать несколько вызовов REST за одну поездку в сервис.
уже находится в состоянии разработки. Ура! Спасибо пользователю Office Developer Platform UserVoice за это и, в частности, Эндрю Коннеллу за создание запроса на функцию
С другой стороны, Search Query API
может использоваться для запроса нескольких списков, например, следующий поисковый запрос:
contentclass:STS_ListItem AND ContentType:Task
вернет все элементы задачи.
Пример JavaScript
В следующем примере демонстрируется использование API поиска с использованием конечной точки REST:
function searchTaskItems(webUrl,success, failure) {
var url = webUrl + "/_api/search/query?querytext='contentclass:STS_ListItem AND ContentType:Task'";
$.ajax({
url: url,
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function (data) {
success(data.d.query);
},
error: function (data) {
failure(data);
}
});
}
//print tasks
searchTaskItems(_spPageContextInfo.webAbsoluteUrl,
function(query){
var resultsCount = query.PrimaryQueryResult.RelevantResults.RowCount;
for(var i = 0; i < resultsCount;i++) {
var row = query.PrimaryQueryResult.RelevantResults.Table.Rows.results[i];
var taskName = row.Cells.results[3].Value;
console.log(taskName);
}
},
function(error){
console.log(JSON.stringify(error));
}
);
Нет, для этого вам понадобится несколько вызовов REST. Вы также можете использовать CSOM, чтобы уменьшить количество обращений к серверу. Вы можете загрузить весь клиентский запрос и выполнить только один запрос к серверу, чтобы присоединиться ко всем спискам.
Вы можете получить данные из нескольких списков, используя REST. Все, что вы могли бы, это извлечь данные из нескольких списков, если есть какой-либо столбец Lookup, который будет связывать данные между / среди списков. В таком случае вам нужно будет использовать предложение $ expand. Ищите в Google, чтобы расширить sharepoint. Звоните по телефону. Это может помочь вам.