2. About Me
• Solution Architect @ Protiviti
• 7 Time SharePoint MVP
• Cover Everything-SharePoint
• Development
• Branding
• Design
• Architecture
• Security
• Dream about SharePoint, well sometimes
6. What is REST, well SharePoint REST?
REST
• Representational State
Transfer
• Vocabulary Based
• GET
• POST
• PUT
• PATCH
• DELETE
SharePoint REST
• HTTP-Based Architecture
• Uses Nouns and Verbs
• Items, GET, POST, PUT, DELETE
• OData Provides the
Description/Metadata
• “/items(1)”
• CSOM is the Processor
• Returns JSON or XML
• “/items/GetByTitle(„Test‟)”
9. REST Filtering
Option Description
$expand
Directs that related records should be
retrieved in the record or collection being
retrieved.
$filter
Specifies an expression or function that must
evaluate to „true‟ for a record to be returned in
the collection.
$orderby
Determines what values are used to order a
collection of records.
$select Specifies a sub set of properties to return.
$skip
Sets the number of records to skip before it
retrieves records in a collection.
$top
Determines the maximum number of records
to return.
11. SharePoint 2013 REST Endpoints
Site
Webs
Features
Event
Receivers
Web
Lists
Items
Publishin
g
Pages
Variations
Navigation
User
Profiles
Users
Profiles
Activity
Search
Query
Results
Suggestio
ns
Taxonom
y
Managed
Metadata
12. SharePoint 2013 REST Security
Local
Current
Context
Request Digest
Context Info
Remote
OAuth
Access Token
Cross Domain
Cross Domain
Request
Executor
SP.WebProxy
HTTP
WebRequest
13. Endpoints – Example READ
URL Returns
_api/web/title “Title” of the current site
_api/web/lists(guid'<list id>') Get the list from supplied ID
_api/web/lists/getByTitle('Announcements')
/fields
Get all columns from the “Announcements”
list
_api/web/lists/getByTitle('Task')/items Get items from the “Task” list
_api/web/siteusers Get users in the site
_api/web/sitegroups Get user groups in the site
_api/web/sitegroups(3)/users Get users that belong to group “3”
_api/web/GetFolderByServerRelativeUrl('/S
hared Documents')
Get root folder of the Shared Documents
library
_api/web/GetFolderByServerRelativeUrl('/T
est')/Files('a.txt')/$value
Get “a.txt” from the “Test” document library
15. SharePoint App Types
Provider Hosted
App Web -
Optional
Dedicated Hosting
REST + OAuth
CSOM
Auto hosted
App Web –
Optional
Windows/SQL
Azure
REST + Oauth
CSOM
SharePoint Hosted
App Web
REST
JSOM
16. SharePoint 2013 App User Experience
Immersive
Full Page
Redirect to App
Web
Chrome will be
needed
Part
Web/App Part
Page(s) Loaded
from App Web
Fit into existing
structure and
chrome
Custom
Actions
Ribbon
ECB
Redirect to App
Web
Part of the
native UI
23. Thoughts
Feature
.NET Framework / Silverlight
object models
JavaScript object model REST / OData Endpoints
Object-oriented programming Yes Yes No
Batch processing Yes Yes No
APIs for conditional processing
and exception handling
Yes No No
Availability of LINQ syntax Yes No No
Combining list data from different
SharePoint web applications
Yes No Yes
Familiarity to experienced
REST/OData developers
No No Yes
Similarity to non-Windows
programming or JavaScript
programming
No Yes Yes
Strong typing for list item fields No (except with LINQ) No
Yes, from Windows platform
No, from JavaScript
Leveraging jQuery, Knockout, and
other JavaScript libraries
No Yes
No, from Windows platform
Yes, from JavaScript
24. Thoughts
• Data is returned as XML in AtomPub
• Extended by the OData Format – “accept: application/json;odata=verbose”
• OData and SharePoint REST are not the same
• Choose the right data retrieval
• Set the correct permissions for your SharePoint App
26. Resources
• Please remember to turn in your filled out bingo cards and event
evaluations for prizes.
• SharePint is sponsored by Slalom at Whiskey Trader (Between 55th
and 56th on 6th Avenue).
• Follow SharePoint Saturday New York City on Twitter @spsnyc and
hashtag #spsnyc