RESTFul Web ServicesThe Easy Way
What is REST?
•Representational State Transfer•Maps your CRUD actions to HTTP verbs
Action Verb
Create POST
Retrieve GET
Update PUT
Delete DELETE
Why REST?
•Simple, both conceptually and programmatically
•Simpler and cleaner than SOAP
SOAP ExamplePOST /InStock HTTP/1.1 Host: www.example.org Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn
<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPrice> <m:StockName>IBM</m:StockName>
</m:GetStockPrice> </soap:Body>
</soap:Envelope>
REST ExampleGET /stock/IBM HTTP/1.1 Host: www.example.org Accept: application/xml
SOAP Example 2POST /InStock HTTP/1.1 Host: www.example.org Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn
<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-
envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.example.org/stock">
<m:BuyStock> <m:StockName>IBM</m:StockName> <m:Quantity>50</m:Quantity>
</m:BuyStock> </soap:Body>
</soap:Envelope>
REST Example 2POST /order HTTP/1.1 Host: www.example.org Content-Type: application/xml; charset=utf-8
<?xml version="1.0"?> <order>
<StockName>IBM</StockName><Quantity>50</Quantity>
</order>
Single Resource Summary
•Create▫POST /resourceName
•Retrieve▫GET /resourceName/resourceId
•Update▫PUT /resourceName/resourceId
•Delete▫DELETE /resourceName/resourceId
Making it Easy: JSR 311
•JAX-RS: The Java API for RESTful Web Services
•No XML Configuration!▫Simple annotations to quickly put together
some rest based web services.•Can do automatic serialization (both XML
and JSON + many others)
Example Application w/ Jersey
Some REST/Jersey/JAXB Gotchas•No real security standard for REST.
▫Mostly DIY solutions•Hibernate dependencies
▫Use cg-lib-nodeps
Questions?
The End
Sean is reachable at:• [email protected]•www.crazyorgenius.com•@ssmith
Top Related