SharePoint REST API: CAML Query

Introduction

Last week, I was working with SharePoint REST API. In some terms, I need to do some complicated query in a SP list. To do these queries, I prefer CAML. But to use CAML with SharePoint REST API, I have been banging my head against the wall for a couple of days as I was stacked with errors. At last, I got the solution that I wanted.

Using the Code

So what I missed is the first condition of using CAML with REST request. That is, it always has to be a POST request. The request header is the same as the other normal post requests for SharePoint Rest API.

headers: {
         "X-RequestDigest": $("#__REQUESTDIGEST").val(),
         'content-type': 'application/json;odata=verbose',
         'accept': 'application/json;odata=verbose'
}

The REST endpoint for using CAML query is:

/_api/web/lists/GetByTitle('<List Name>')/GetItems 

The complete code with the REST call is given below:

// Include JQuery reference
// ... script continues ...
        /// List Name and CAML Query as Parameter
        function restCallwithCaml(listName, caml) {
             /// get the site url
             var siteUrl = _spPageContextInfo.siteAbsoluteUrl;
             /// set request data     
             var data = { "query" : {"__metadata": 
             { "type": "SP.CamlQuery" }, "ViewXml":cmlQuery}};
             /// make an ajax call
             $.ajax({
                url: siteUrl+"/_api/web/lists/GetByTitle
                ('"+ listName +"')/GetItems",
                method: "POST",
                data: data,
                headers: {
                   "X-RequestDigest": $("#__REQUESTDIGEST").val(),
                   'content-type': 'application/json;odata=verbose',
                   'accept': 'application/json;odata=verbose'
                }
                success: function (response) {
                    ///do your code
                },
                error: function (data) {
                  ///do your code
                }
            });
       }

The CAML Query has to use in between this <View><Query>…CAML Query…</Query></View> tag. The query with the way to call the function is given below:

 

Leave a Reply

%d bloggers like this: