Blog address: http://blog.csdn.net/FoxDave
This article focuses on how to use SharePoint REST to manipulate lists and list items. Read this article first to understand the introduction and basic operation of REST described earlier.
No more nonsense, let's start now.
Getting list attributes with REST
When you know the GUID of a list, you can use the following request to get the list object.
If you know the title of a list, you can use the following request.url: http://site url/_api/web/lists(guid'list GUID'), method: GET Headers: Authorization: "Bearer " + accessToken accept: "application/json;odata=verbose" or "application/atom+xml"
The following is an example of the XML result returned by the request, which basically corresponds to the attributes of the API, without much explanation.url: http://site url/_api/web/lists/GetByTitle('Test') method: GET Headers: Authorization: "Bearer " + accessToken accept: "application/json;odata=verbose" or "application/atom+xml"
Note the property ListItemEntityTypeFullName, which is important because when you need to create or update a list item, you must pass this parameter as a type attribute in metadata.<content type="application/xml"> <m:properties> <d:AllowContentTypes m:type="Edm.Boolean">true</d:AllowContentTypes> <d:BaseTemplate m:type="Edm.Int32">100</d:BaseTemplate> <d:BaseType m:type="Edm.Int32">0</d:BaseType> <d:ContentTypesEnabled m:type="Edm.Boolean">false</d:ContentTypesEnabled> <d:Created m:type="Edm.DateTime">2012-06-26T23:15:58Z</d:Created> <d:DefaultContentApprovalWorkflowId m:type="Edm.Guid">00000000-0000-0000-0000-000000000000</d:DefaultContentApprovalWorkflowId> <d:Description>A list created by Project Based Retention used to store Project Policy Items.</d:Description> <d:Direction>none</d:Direction> <d:DocumentTemplateUrl m:null="true" /> <d:DraftVersionVisibility m:type="Edm.Int32">0</d:DraftVersionVisibility> <d:EnableAttachments m:type="Edm.Boolean">true</d:EnableAttachments> <d:EnableFolderCreation m:type="Edm.Boolean">false</d:EnableFolderCreation> <d:EnableMinorVersions m:type="Edm.Boolean">false</d:EnableMinorVersions> <d:EnableModeration m:type="Edm.Boolean">false</d:EnableModeration> <d:EnableVersioning m:type="Edm.Boolean">false</d:EnableVersioning> <d:EntityTypeName>ProjectPolicyItemList</d:EntityTypeName> <d:ForceCheckout m:type="Edm.Boolean">false</d:ForceCheckout> <d:HasExternalDataSource m:type="Edm.Boolean">false</d:HasExternalDataSource> <d:Hidden m:type="Edm.Boolean">true</d:Hidden> <d:Id m:type="Edm.Guid">74de3ff3-029c-42f9-bd2a-1e9463def69d</d:Id> <d:ImageUrl>/_layouts/15/images/itgen.gif</d:ImageUrl> <d:IrmEnabled m:type="Edm.Boolean">false</d:IrmEnabled> <d:IrmExpire m:type="Edm.Boolean">false</d:IrmExpire> <d:IrmReject m:type="Edm.Boolean">false</d:IrmReject> <d:IsApplicationList m:type="Edm.Boolean">false</d:IsApplicationList> <d:IsCatalog m:type="Edm.Boolean">false</d:IsCatalog> <d:IsPrivate m:type="Edm.Boolean">false</d:IsPrivate> <d:ItemCount m:type="Edm.Int32">0</d:ItemCount> <d:LastItemDeletedDate m:type="Edm.DateTime">2012-06-26T23:15:58Z</d:LastItemDeletedDate> <d:LastItemModifiedDate m:type="Edm.DateTime">2012-06-26T23:15:59Z</d:LastItemModifiedDate> <d:ListItemEntityTypeFullName>SP.Data.ProjectPolicyItemListItem</d:ListItemEntityTypeFullName> <d:MultipleDataList m:type="Edm.Boolean">false</d:MultipleDataList> <d:NoCrawl m:type="Edm.Boolean">true</d:NoCrawl> <d:ParentWebUrl>/</d:ParentWebUrl> <d:ServerTemplateCanCreateFolders m:type="Edm.Boolean">true</d:ServerTemplateCanCreateFolders> <d:TemplateFeatureId m:type="Edm.Guid">00bfea71-de22-43b2-a848-c05709900100</d:TemplateFeatureId> <d:Title>Project Policy Item List</d:Title> </m:properties> </content>
Use REST operation list
The request to create a list is shown below.
The following code demonstrates how to update the list through the MERGE method.url: http://site url/_api/web/lists method: POST body: { '__metadata': { 'type': 'SP.List' }, 'AllowContentTypes': true, 'BaseTemplate': 100, 'ContentTypesEnabled': true, 'Description': 'My list description', 'Title': 'Test' } Headers: Authorization: "Bearer " + accessToken X-RequestDigest: form digest value accept: "application/json;odata=verbose" content-type: "application/json;odata=verbose" content-length:length of post body
The next code demonstrates how to add custom fields to a list.url: http://site url/_api/web/lists(guid'list GUID') method: POST body: { '__metadata': { 'type': 'SP.List' }, 'Title': 'New title' } Headers: Authorization: "Bearer " + accessToken X-RequestDigest: form digest value IF-MATCH": etag or "*" X-HTTP-Method: MERGE, accept: "application/json;odata=verbose" content-type: "application/json;odata=verbose" content-length:length of post body
Next is how to delete a list.Url: url: http://site url/_api/web/lists(guid'list GUID')/Fields Method:POST Body: { '__metadata': { 'type': 'SP.Field' }, 'Title': 'field title', 'FieldTypeKind': FieldType value,'Required': 'true/false', 'EnforceUniqueValues': 'true/false','StaticName': 'field name'} Headers: Authorization: "Bearer " + accessToken X-RequestDigest: form digest value content-type: "application/json;odata=verbose" content-length:length of post body
Use REST to manipulate list itemsurl: http://site url/_api/web/lists(guid'list GUID') method: POST Headers: Authorization: "Bearer " + accessToken X-RequestDigest: form digest value IF-MATCH: etag or "*" X-HTTP-Method: DELETE
The following example shows how to get all the list items in the list.
Note that when querying list items, $skip needs to change to $skiptoken.url: http://site url/_api/web/lists/GetByTitle('Test')/items method: GET headers: Authorization: "Bearer " + accessToken accept: "application/json;odata=verbose" or "application/atom+xml"
The following example shows how to get the specified list item through the list item ID.
The following XML is an example of a request returned.url: http://site url/_api/web/lists/GetByTitle('Test')/items(item id) method: GET headers: Authorization: "Bearer " + accessToken accept: "application/json;odata=verbose" or "application/atom+xml"
The following code demonstrates how to create a list item.<content type="application/xml"> <m:properties> <d:FileSystemObjectType m:type="Edm.Int32">0</d:FileSystemObjectType> <d:Id m:type="Edm.Int32">1</d:Id> <d:ID m:type="Edm.Int32">1</d:ID> <d:ContentTypeId>0x010049564F321A0F0543BA8C6303316C8C0F</d:ContentTypeId> <d:Title>an item</d:Title> <d:Modified m:type="Edm.DateTime">2012-07-24T22:47:26Z</d:Modified> <d:Created m:type="Edm.DateTime">2012-07-24T22:47:26Z</d:Created> <d:AuthorId m:type="Edm.Int32">11</d:AuthorId> <d:EditorId m:type="Edm.Int32">11</d:EditorId> <d:OData__UIVersionString>1.0</d:OData__UIVersionString> <d:Attachments m:type="Edm.Boolean">false</d:Attachments> <d:GUID m:type="Edm.Guid">eb6850c5-9a30-4636-b282-234eda8b1057</d:GUID> </m:properties> </content>
Note here that you need to know the ListItemEntityTypeFullName value mentioned above and pass it as a type parameter.url: http://site url/_api/web/lists/GetByTitle('Test')/items method: POST body: { '__metadata': { 'type': 'SP.Data.TestListItem' }, 'Title': 'Test'} headers: Authorization: "Bearer " + accessToken X-RequestDigest: form digest value accept: "application/json;odata=verbose" content-type: "application/json;odata=verbose" content-length:length of post body
The following code shows how to update a list item.
Next, delete the list item.url: http://site url/_api/web/lists/GetByTitle('Test')/items(item id) method: POST body: { '__metadata': { 'type': 'SP.Data.TestListItem' }, 'Title': 'TestUpdated'} headers: Authorization: "Bearer " + accessToken X-RequestDigest: form digest value "IF-MATCH": etag or "*" "X-HTTP-Method":"MERGE", accept: "application/json;odata=verbose" content-type: "application/json;odata=verbose" content-length:length of post body
In addition, when using REST to manipulate list items, how to consider the version, you can use the ETag attribute, specifically you can go to Bing search to find out, here do not elaborate too much.url: http://site url/_api/web/lists/GetByTitle('Test')/items(item id) method: POST headers: Authorization: "Bearer " + accessToken X-RequestDigest: form digest value "IF-MATCH": etag or "*" "X-HTTP-Method":"DELETE"