• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Building Restful Applications Using Php

Building Restful Applications Using Php



Slides presented at Bangalore PHP User Group Meeting - October 31 2009 by Sudheer Satyanarayana.

Slides presented at Bangalore PHP User Group Meeting - October 31 2009 by Sudheer Satyanarayana.



Total Views
Views on SlideShare
Embed Views



1 Embed 51

http://www.slideshare.net 51



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.


11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • Using imagery in this demonstration is really effective. You have done a fantastic job here friend.
    http://financeadded.com http://traveltreble.com
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

    Building Restful Applications Using Php Building Restful Applications Using Php Presentation Transcript

    • Bangalore PHP User Group – 31 October 2009 Building RESTful Applications Using PHP Sudheer Satyanarayana http://techchorus.net http://binaryvibes.co.in
    • About Your Presenter Director, Binary Vibes Information Technologies Pvt. Ltd (http://binaryvibes.co.in) Free and open source software supporter PHP programmer Blogger - http://techchorus.net
    • Topics What is REST? Why REST? How to use REST?
    • What Is REST? Representational State Transfer Style of software architecture Introduced by Roy Fielding
    • Six Constraints Describe The Architectural Style Client Server Statelessness Cacheable Uniform interface Layered system Code on demand
    • Constraint 1: Separation Of Clients And Servers
    • Clients Browser PHP/Python/Perl/Whatever script Desktop application Command line Anything that can make an HTTP request
    • Advantages Of Separation Of Clients And Servers Portability: clients are not bothered about data storage Scalibility: servers are not bothered about user interface Independent development of clients and servers
    • Constraint 2: Statelessness HTTP is stateless Server does not store client context Clients may hold context Each request contains all information required to process the request
    • Advantages Of Statelessness Servers are more scalable Servers are more reliable Servers are more visible for monitoring
    • Constraint 3 : Cacheable Responses indicate whether they are cacheable Eliminates some client server interactions
    • Advantages Of Cacheability Performance Scalability
    • Constraint 4: Uniform Interface REST is defined by four interface constraints Identification of resources Manipulation of resources through representations Self descriptive messages Hypermedia as the engine of application state
    • Identification Of Resources Resource can be anything Article Comment Contact User Employee URI – Uniform Resource Identifier http://example.com/article/1 http://example.com/comment http://example.com/article?title=abc
    • Manipulation Of Resrources Through Representations Use the HTTP verbs GET – retrieve one or a collection of articles POST – create a resource PUT – modify an article DELETE – delete an article http://example.com/article GET Return collection of articles http://example.com/article/1 GET Return article whose id is 1 http://example.com/article POST Create an article http://example.com/article/1 PUT Modify the article whose id is 1 http://example.com/article/1 DELETE Delete the article whose id is 1
    • Self Descriptive Messages HTTP Headers HTTP Response Codes 1XX Informational 2XX Success 200 Ok 201 Created 202 Accepted 204 No Content 3XX Redirection 4XX Client Error 403 Forbidden 404 Not Found 5XX Server Error
    • Hypermedia As The Engine Of Application State Provide sufficient information to access related resources When http://example.com/article/1 is accessed Inform the client how to access the comments of article 1 Mention http://example.com/comments?criteria=byarticle&articleid=1 in the response
    • Constraint 5 : Layered System Proxies, gateways and other intermediaries Encapsulate legacy services Protect new services from legacy clients Load balancing High performance
    • Constraint 6: Code On Demand (Optional) Client downloads code from server and executes it Common example: Server generating JavaScript code
    • If your system conforms to these constraints it can be called RESTful
    • REST Advantages Performance Scalability Simplicity Modifiability Visibility Portability Reliability
    • Tips to put these concepts into practice
    • PHP header() function Use header() function to describe the response headers header("HTTP/1.0 404 Not Found"); header(”Location: http://example.com/movedhere”); header('Content-type: application/xml); header('Content-type: application/json);
    • Determine the request method $_SERVER['REQUEST_METHOD']
    • Use cUrl from the CLI to test REST server Write a PHP script to make HTTP requests PHP supports curl, use the PHP curl_* functions Streams and sockets functions are also available Telnet also works
    • Use Apache's mod_rewrite to make URLs pretty Other web servers offer similar functionality $_SERVER['REQUEST_URI']
    • Encode data to and decode from JSON json_encode() json_decode()
    • Authentication HTTP Authentication API Key in HTTP header apache_request_headers() $_SERVER
    • Your favourite PHP framework might have a component to help develop RESTful servers Use it
    • Questions?
    • Contact me http://twitter.com/bngsudheer http://techchorus.net IRC, Bonaparte on freenode.net Thank you
    • Copyright Notice This presentation is licensed under the Creative Commons Attribution- Noncommercial-Share Alike 2.5 India http://creativecommons.org/licenses/by-nc-sa/2.5/in/