Transcript
Page 1: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

Oh CRUD -- Enhance the Sitecore Item Web API to Fit Your Needs

Sharing Inspiring Connecting

Mike ReynoldsProduct Technical LeadMedTouch

Page 2: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

Sitecore Item Web API- Create, Read, Update and Delete (CRUD)

- Defined by HTTP request methods- Create => POST- Read => GET- Update => PUT- Delete => DELETE (really? :P)

Sharing Inspiring Connecting

Page 3: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

Sitecore Item Web API- Touch multiple items in “scope”

- Parent => p- Self => s- Children => c- can request all three -- sweet!

- Uses JSON in responses by default- Customizable through pipelines

Sharing Inspiring Connecting

Page 4: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

<itemWebApiRequest>- Main pipeline to handle requests -- I knew that! ;)- Determines if user has permission to make request- Gets items- Ascertains scope- Executes action- Serializes and returns response (JSON by default)

Sharing Inspiring Connecting

Page 5: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

<itemWebApiRequest>- ResolveAction processor

- Executes action- Creates media library items- Cannot set media library item fields

Sharing Inspiring Connecting

Page 6: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

<itemWebApiRequest>- But I want to set media library item fields!

- Create a custom ResolveAction processor

Sharing Inspiring Connecting

Page 7: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

<itemWebApiRequest>Let’s see one

Sharing Inspiring Connecting

Page 8: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

<itemWebApiRequest>- But I don't want to use JSON!

- Then change the Serializer already!

Sharing Inspiring Connecting

Page 9: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

<itemWebApiRequest>Let’s see such a thing

Sharing Inspiring Connecting

Page 10: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

<preprocessRequest>- Has one lonely processor :(- Does some URL rewriting magic- Creates the default Serializer instance

Sharing Inspiring Connecting

Page 11: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

<preprocessRequest>

Sharing Inspiring Connecting

Page 12: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

<preprocessRequest>- Didn’t we already talk about the Serializer?

- an alternative way to change it- custom PreprocessRequestProcessor

Sharing Inspiring Connecting

Page 13: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

<preprocessRequest>

Let’s see an example

Sharing Inspiring Connecting

Page 14: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

<itemWebApiGetProperties>- Consists of one processor

- Provides information about an item- e.g. ID, Language, Template, Hair Color, Blood Type, etc.

Sharing Inspiring Connecting

Page 15: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

<itemWebApiGetProperties>

Sharing Inspiring Connecting

Page 16: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

<itemWebApiGetProperties>- But I want to know more about an item! :D

- Add a custom GetPropertiesProcessor!

Sharing Inspiring Connecting

Page 17: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

<itemWebApiGetProperties>Let’s see an example

Sharing Inspiring Connecting

Page 18: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

<itemWebApiDelete>- Composed of one processor- Ignores RecycleBinActive setting in Web.config

- Permanently deletes all items in scope! O_O

Sharing Inspiring Connecting

Page 19: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

<itemWebApiDelete>- How can we recycle items instead?

- Recycle items using a DeleteProcessor

Sharing Inspiring Connecting

Page 20: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

<itemWebApiDelete>

Show me the code!

Sharing Inspiring Connecting

Page 21: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

What About Publishing?- Does not exist “out of the box” - Fill the gap using a custom pipeline

- custom <itemWebApiPatch> pipeline- Publish => PATCH - Let’s see it!

Sharing Inspiring Connecting

Page 22: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

Go Check It Out!Download it (SDN): http://bit.ly/19E9AzADeveloper's Guide: http://bit.ly/GQIaugSitecoreJunkie.com: http://bit.ly/19DoIY0Kern's Console Application: http://bit.ly/16UqOZx

Sharing Inspiring Connecting

Page 23: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

Get In Touch!Email: [email protected]: @mike_i_reynoldsBlog: http://sitecorejunkie.com

Sharing Inspiring Connecting

Page 24: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

Questions?

Sharing Inspiring Connecting

Page 25: Oh  CRUD -- Enhance the  Sitecore  Item Web API to Fit Your  Needs

Sitecore Users 2013

Virtual Summit

Thank You!

Fin

Sharing Inspiring Connecting