Web services RPC, SOAP and REST
The nerdy credentials Pradeep Kumar Orange • Blog : http://prady00.com • Twitter : http://twitter.com/prady00 • These days : http://jsBunch.com • This presentation : http://www.slideshare.net/prady00/ • Code Examples : https://github.com/prady00/TG_Webservices
Agenda • Internet (of things) • Need for web services • Web sites Vs Web services • Web services design models – The “dummy” way – XML RPC – SOAP – REST
Agenda • Modern app architecture • Web services decisions • Implementation of XML RPC • Implementation of SOAP • Implementation of REST • Questions
Internet (of things)
Need for web services
Need for web services • Abstract reusable interface • Hiding complexities • Supporting “Data anywhere” architecture • Services over internet • Services can be : – Infrastructure or Platform : Amazon S3 – Reusable software component : Currency APIs – Data : Facebook, Twitter – and ….
Web site Vs Web services Web site Web services
Web services design models : The need
Web services in terms of it’s benifits • Easy to interoperate • It is Easy to use • It can be standardized • It allows using legacy • Language independence
Web services design models • The “dummy” way - A non standard hacky way and implications • XML RPC - XML – Remote Procedure Call Protocol • SOAP - Simple Object Access Protocol • REST - REpresentational State Transfer
The “dummy” way
XML RPC • Protocol which uses XML to encode its calls and HTTP POST as a transport mechanism. • XML RPC standards : Link • Standards specify – – Data types : arrays, boolean, string etc – Structure of request and response – Transport specs
XML RPC : Sample Request <?xml version="1.0"?> <methodCall> <methodName>examples.getStateName</methodName> <params> <param> <value><i4>40</i4></value> </param> </params> </methodCall> Coded somewhere : String getStateName(int i4){ //fetch state name from some source return stateName; }
XML RPC : Sample Response <?xml version="1.0"?> <methodResponse> <params> <param> <value><string>South Dakota</string></value> </param> </params> </methodResponse>
XML RPC : How it works Corresponding function to XML RPC Request executes and generates response
XML RPC : Critiques • Simple to use, develop and consume • Uses legacy XML • Light weight than SOAP • Doesn’t requires/support WSDL • No support for i18n • allows only one mode of method serialization
SOAP • Modified version of XML RPC • More powerful than XML RPC • Based on WSDL (Web Services Description Language) and UDDI (Universal Description Discovery and Integration) • SOAP Standards : Link • What standards : Data types, Structure and namespaces/attributes standards.
SOAP
SOAP : Structure
SOAP Request : Structure <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Header> </soap:Header> <soap:Body> <m:GetStockPrice xmlns:m="http://www.example.org/stock"> <m:StockName>IBM</m:StockName> </m:GetStockPrice> </soap:Body> </soap:Envelope> Coded somewhere : float getStockPrice(String IBM){ // get stock price from some IS return stockPrice; }
SOAP Response : Structure <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Header> </soap:Header> <soap:Body> <m:GetStockPriceResponse> <m:Price>34.5</m:Price> </m:GetStockPriceResponse> </soap:Body> </soap:Envelope>
SOAP : How it works Corresponding function to SOAP Request executes and generates response
SOAP : Critiques • Versatile, can use different protocols : SMTP • More powerful • Automated tools exists • Uses XML • Supports WSDL • Too verbose
REST • It’s not a protocol, it’s an architectural approach. • Can be used with legacy XML or modern JSON information transfer format • Guidelines : HTTP methods and corresponding CRUD operation, recommendation about URI design.
REST : Principles • Be stateless • Use HTTP methods for CRUD operations • Directory like structure • Use proper MIME types
REST : HTTP Methods SQL REST SELECT GET INSERT POST UPDATE PUT DELETE DELETE HEAD : get meta-data OPTIONS : to get details about a resource TRACE : used to debug proxies CONNECT : Forward some other protocol through HTTP proxy
REST : URI Design URI HTTP METHOD ACTION PERFORMED /status/ GET Get all status /status/3 GET Get status with id 3 /status/ POST Add a new status /status/4 PUT Edit status with id 4 /status/4 DELETE Delete status with id 4
REST : HTTP Status HTTP Status Codes Informational 200 OK 201 Resource created 204 No content 400 Bad Request 401 Unauthorised 404 Not found 405 Method Not allowed 500 Internal Server Error
REST : Sample Request URI HTTP METHOD ACTION PERFORMED /status/ POST Add a new status HTTP Method : POST HTTP BODY : { “status”: “I am these days diving deeper in web services” }
REST : Sample Response HTTP Status : 201 HTTP BODY : { “message”: “Status updated” }
REST : How it works 1. Check HTTP Verb 2. Check path 3. Call Corresponding function 4. Send Response
REST : Critiques • More open guidelines • Can use JSON or XML • Easy to develop and maintain • Depends on other security approaches like oAuth. • Confined to HTTP only
Modern apps architectures REST API
Modern apps architectures : The positive sides • Too many types of users • Too many types of devices • To be near your user • Data syncing • More user = more business • Ability to integrate with other apps
The web-services decisions • Client • Third party system • Legacy • Resources • Modern Moves p.s: Take decisions smartly
Questions

Webservices Overview : XML RPC, SOAP and REST

  • 1.
  • 2.
    The nerdy credentials PradeepKumar Orange • Blog : http://prady00.com • Twitter : http://twitter.com/prady00 • These days : http://jsBunch.com • This presentation : http://www.slideshare.net/prady00/ • Code Examples : https://github.com/prady00/TG_Webservices
  • 3.
    Agenda • Internet (ofthings) • Need for web services • Web sites Vs Web services • Web services design models – The “dummy” way – XML RPC – SOAP – REST
  • 4.
    Agenda • Modern apparchitecture • Web services decisions • Implementation of XML RPC • Implementation of SOAP • Implementation of REST • Questions
  • 5.
  • 6.
    Need for webservices
  • 7.
    Need for webservices • Abstract reusable interface • Hiding complexities • Supporting “Data anywhere” architecture • Services over internet • Services can be : – Infrastructure or Platform : Amazon S3 – Reusable software component : Currency APIs – Data : Facebook, Twitter – and ….
  • 8.
    Web site VsWeb services Web site Web services
  • 9.
    Web services designmodels : The need
  • 10.
    Web services interms of it’s benifits • Easy to interoperate • It is Easy to use • It can be standardized • It allows using legacy • Language independence
  • 11.
    Web services designmodels • The “dummy” way - A non standard hacky way and implications • XML RPC - XML – Remote Procedure Call Protocol • SOAP - Simple Object Access Protocol • REST - REpresentational State Transfer
  • 12.
  • 13.
    XML RPC • Protocolwhich uses XML to encode its calls and HTTP POST as a transport mechanism. • XML RPC standards : Link • Standards specify – – Data types : arrays, boolean, string etc – Structure of request and response – Transport specs
  • 14.
    XML RPC :Sample Request <?xml version="1.0"?> <methodCall> <methodName>examples.getStateName</methodName> <params> <param> <value><i4>40</i4></value> </param> </params> </methodCall> Coded somewhere : String getStateName(int i4){ //fetch state name from some source return stateName; }
  • 15.
    XML RPC :Sample Response <?xml version="1.0"?> <methodResponse> <params> <param> <value><string>South Dakota</string></value> </param> </params> </methodResponse>
  • 16.
    XML RPC :How it works Corresponding function to XML RPC Request executes and generates response
  • 17.
    XML RPC :Critiques • Simple to use, develop and consume • Uses legacy XML • Light weight than SOAP • Doesn’t requires/support WSDL • No support for i18n • allows only one mode of method serialization
  • 18.
    SOAP • Modified versionof XML RPC • More powerful than XML RPC • Based on WSDL (Web Services Description Language) and UDDI (Universal Description Discovery and Integration) • SOAP Standards : Link • What standards : Data types, Structure and namespaces/attributes standards.
  • 19.
  • 20.
  • 21.
    SOAP Request :Structure <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Header> </soap:Header> <soap:Body> <m:GetStockPrice xmlns:m="http://www.example.org/stock"> <m:StockName>IBM</m:StockName> </m:GetStockPrice> </soap:Body> </soap:Envelope> Coded somewhere : float getStockPrice(String IBM){ // get stock price from some IS return stockPrice; }
  • 22.
    SOAP Response :Structure <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Header> </soap:Header> <soap:Body> <m:GetStockPriceResponse> <m:Price>34.5</m:Price> </m:GetStockPriceResponse> </soap:Body> </soap:Envelope>
  • 23.
    SOAP : Howit works Corresponding function to SOAP Request executes and generates response
  • 24.
    SOAP : Critiques •Versatile, can use different protocols : SMTP • More powerful • Automated tools exists • Uses XML • Supports WSDL • Too verbose
  • 25.
    REST • It’s nota protocol, it’s an architectural approach. • Can be used with legacy XML or modern JSON information transfer format • Guidelines : HTTP methods and corresponding CRUD operation, recommendation about URI design.
  • 26.
    REST : Principles •Be stateless • Use HTTP methods for CRUD operations • Directory like structure • Use proper MIME types
  • 27.
    REST : HTTPMethods SQL REST SELECT GET INSERT POST UPDATE PUT DELETE DELETE HEAD : get meta-data OPTIONS : to get details about a resource TRACE : used to debug proxies CONNECT : Forward some other protocol through HTTP proxy
  • 28.
    REST : URIDesign URI HTTP METHOD ACTION PERFORMED /status/ GET Get all status /status/3 GET Get status with id 3 /status/ POST Add a new status /status/4 PUT Edit status with id 4 /status/4 DELETE Delete status with id 4
  • 29.
    REST : HTTPStatus HTTP Status Codes Informational 200 OK 201 Resource created 204 No content 400 Bad Request 401 Unauthorised 404 Not found 405 Method Not allowed 500 Internal Server Error
  • 30.
    REST : SampleRequest URI HTTP METHOD ACTION PERFORMED /status/ POST Add a new status HTTP Method : POST HTTP BODY : { “status”: “I am these days diving deeper in web services” }
  • 31.
    REST : SampleResponse HTTP Status : 201 HTTP BODY : { “message”: “Status updated” }
  • 32.
    REST : Howit works 1. Check HTTP Verb 2. Check path 3. Call Corresponding function 4. Send Response
  • 33.
    REST : Critiques •More open guidelines • Can use JSON or XML • Easy to develop and maintain • Depends on other security approaches like oAuth. • Confined to HTTP only
  • 34.
  • 35.
    Modern apps architectures: The positive sides • Too many types of users • Too many types of devices • To be near your user • Data syncing • More user = more business • Ability to integrate with other apps
  • 36.
    The web-services decisions •Client • Third party system • Legacy • Resources • Modern Moves p.s: Take decisions smartly
  • 37.