• Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
12,821
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
156
Comments
0
Likes
4

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Get Some REST: SharePoint 2013 REST API's Eric Shupps SharePoint Server MVP
  • 2. Sponsored by: Real-time application monitoring, event management, and operational health metrics for Microsoft SharePoint Reduce troubleshooting time by up to 30% Increase efficiency and improve user satisfaction Avoid downtime and costly outages Meet or exceed service level agreements Maximize investment in current infrastructure Visit us on the web at www.binarywave.com
  • 3. About Me The SharePoint Cowboy Eric Shupps CKS:DEV Patterns & Practices www.sharepointcowboy.com eshupps@binarywave.com facebook.com/sharepointcowboy @eshupps
  • 4. Agenda Introduction Endpoints Basic Operations Advanced Methods JavaScript Windows 8
  • 5. INTRODUCTION
  • 6. Background HTTP-based web service architecture that uses nouns and verbs to define operations Noun: “Items” Verbs: GET, POST, PUT, DELETE OData provides metadata, object typing and query semantics for underlying data structure (WCF data services) /items(0) Client Object Model service (client.svc) processes queries, interacts with server OM, returns formatted response (JSON, XML) /items/GetByTitle(‘foo’)
  • 7. Implementation READ UPDATE DELETE GET PUT, MERGE, DELETE Client.svc CREATE POST Server OM Content DB
  • 8. Structure http://contoso/_api/items/GetById(1)?$select=Title,ID Location Service Resource Path Query Options
  • 9. Security Local Remote Cross Domain Current Context OAuth Request Executor Request Digest Access Token SP.WebProxy Context Info Cross Domain HTTP WebRequest
  • 10. Gotchas  OData Spec != SharePoint REST  No request batching  Must specify “odata=verbose” in header  Default response format is ATOM  Use CSOM notation when accessing static methods and properties  Some requests may not return default values due to processing overhead
  • 11. ENDPOINTS
  • 12. SharePoint 2013 REST Endpoints Site Web Publishing User Profiles Search Taxonomy Webs Lists Pages Users Query Results Managed Metadata Features Items Variations Profiles Suggestions Navigation Activity Event Receivers
  • 13. Metadata You Must Be Joking!
  • 14. BASIC OPERATIONS
  • 15. Sites Get Feature http://<site collection>/<site>/_api/sites/features/GetById(guid’<value>’) View Event Receivers http://<site collection>/<site>/_api/sites/eventreceivers Create a Site http://<site collection>/<site>/_api/web/webinfos/add { 'd' :{ 'parameters': { '__metadata': {'type': 'SP.WebInfoCreationInformation' }, 'Url': 'RestSubWeb', 'Title': 'RestSubWeb', 'Description': 'rest created web', 'Language':1033, 'WebTemplate':'sts', 'UseUniquePermissions':false} }}
  • 16. Lists Get All Lists http://<site collection>/<site>/_api/lists Get List http://<site collection>/<site>/_api/lists/GetByTitle(‘Shared Documents’) Get List Item http://<site collection>/<site>/_api/lists/GetByTitle(‘Shared Documents’)/items/GetById(0) Get List Item with Specific Properties http://<site collection>/<site>/_api/lists/GetByTitle(‘Shared Documents’)/items/ GetById(1)?$select=Title,ID
  • 17. Search Simple Term http://<site collection>/<site>/_api/search/query?queryText=‘Value’ Item Property http://<site collection>/<site>/_api/search/query?queryText=‘PreferredName:Robert Smith’ Suggestions http://<site collection>/<site>/_api/search/suggest?queryText=‘quarterly sales’
  • 18. Social Get Followed Users http://<site collection>/<site>/_api/social.following/followed Get Followed Documents http://<siteCollection>/<site>/_api/social.following/my/followeddocumentsuri Get Suggestions http://<site collection>/<site>/_api/sp.userprofiles.peoplemanager/getmysuggestions Get Followers http://<siteCollection>/<site>/_api/sp.userprofiles.peoplemanager/ getpeoplefollowedby(accountName=@v)?@v='domainuser'
  • 19. ADVANCED METHODS
  • 20. Queries HTML Values http://<site>/_api/Web/Lists(guid’<value>′)/Items(1)/FieldValuesAsHtml Get Permissions http://<site>/_api/web/lists/getbytitle(‘Products’)/items()/?$select=Title, Price,effectivebasepermissions Join http://<site>/_api/web/lists/getbytitle('Products')/items()?$select=Title, Price,Supplier_/Title&$expand=Supplier_/Title
  • 21. Sorting & Filtering Filter with Comparison http://<site>/_api/web/lists/getbytitle(‘Products’)/items/?$filter=Price gt 30000 Join with Filter http://<site>/_api/web/lists/getbytitle(‘Products’)/items()? $select=Title,Price,Supplier_/Title&$expand=Supplier_/Title&$filter=Supplier_/Title eq ‘Acme’ Top ‘N’ Results http://<site collection>/<site>/_api/web/lists('<guid>')/items$top=10
  • 22. CRUD Operations Create a List Item 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:1024 Edit a 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:1024
  • 23. Form Digest  Used to prevent replay attacks  Updates will fail without digest value  Local  $("#__REQUESTDIGEST").val()  Remote  POST to /_api/contextinfo
  • 24. JAVASCRIPT
  • 25. Operations  Async GET/POST operations using AJAX library  Cross-Domain Library  SP.RequestExecutor  Remote Apps: SP.AppContextSite with @target  JSON response  accept: "application/json;odata=verbose"
  • 26. Authorization  Remote  Use CSOM to set context  Sites/Webs/Lists – Handled by appweb not hostweb  Pass token in request – RequestExecutor  Local  Use current context
  • 27. Retrieving SharePoint list data with jQuery, REST and AJAX PROVIDER HOSTED APP
  • 28. WINDOWS 8
  • 29. Operations  XAML  List items with specific fields  Async – HTTPClient, HTTPClientHandler  ATOM  LINQ
  • 30. Authorization  Domain Credentials  Permissions  Enterprise Authentication  Private Networks
  • 31. Uploading Documents to SharePoint using REST WINDOWS 8 APP
  • 32. Sponsored by: Real-time application monitoring, event management, and operational health metrics for Microsoft SharePoint Reduce troubleshooting time by up to 30% Increase efficiency and improve user satisfaction Avoid downtime and costly outages Meet or exceed service level agreements Maximize investment in current infrastructure Visit us on the web at www.binarywave.com
  • 33. Resources Description Link Programming Using the SharePoint 2013 REST Service http://bit.ly/TUwC9N OData URI Conventions http://bit.ly/Ytgdz4 Using the SharePoint 2013 REST Service http://bit.ly/YPHif5 SharePoint 2013 Search REST API http://bit.ly/ZqzOuM Configuring SharePoint 2013 Search REST for Anonymous Users http://bit.ly/152vFoy SharePoint 2013 REST TypeScript Library http://sprestts.codeplex.com