ServicesinPHP
WebServices
Webbasedapplications
HTTPistheinterface
DataistransmittedinXMLorJSON
Generallyintendedformachinetomachine
communication
• Requiredformashups(generally)
•
•
•
•
HTTP
• GET
– Requestsdatafromaserver
• POST
– Sendsdatatoaserver
• PUT
– Pushesafileontoaserver
• DELETE
– Asksservertodeletearesource
• HEAD
– Getshttpheaderbackfromserver,notwholeresource
HTTPResponses
• 2xx=thingsaregood
– 200:OK,201:created,204:returningnocontent
• 3xx=redirect
– Head(‘location…causes300classHTTPresponse
fromyourserver
HTTPResponses
• 4xx=clienterror
– 401:unauthorized,403:forbidden,404:not
found,411:lengthrequired
• 5xx=servererror
– 500:error,501:notimplemented,503:Service
Unavailable
WebServices…
ServiceA
HTTP
XML
HTTP
Client
HTML
Host
web
server
ServiceB
ServiceC
Database
AJAXWebServices…
ServiceA
HTTP
JSON/XML/TEXT
Client
SideJS
engine
ServiceB
DOM
Client
HTML
Host
web
server
Database
ServiceC
Anexample
• LoadupthisURLinyourbrowser(addan
address)
• Youcouldloadthiswithsimplexml_load_file()
addresshere>>&output=xml&sensor=false
WebServiceFlavors
• SOAP
– XMLwrapperforHTTPdatatransfer
– Candefineanymethod(beyondGet,Post&c)
– Lotsofoverhead
• REST
– LighterthanSOAP
– OnlysupportsHTTPmethods
REST
• ClientgetsaURLlike
example.com/products
• ServersendsbackXML
AChair</product>
ATable</product>
</products>
REST
• ClientgetsaURLlike
example.com/products/1234
• ServersendsbackXML
….
<costunits=‘usdollars’>45.00</cost>
<color>green</color>
</product>
REST
• ImaginethewholedatastructureisinXML
– (butreally,wearejustgettingdataoutofany
database)
• SubfoldersintheURLmoveinthecomplete
pretendXMLmodellikeXPATH
• SnippetsofXMLarereturned
• Examples:
GET/POSTExamples
• GenerateyourownHTTPrequestsfromPHP
tootherservers/services:
• EasytouseBasicHTTPauthbetweenservices
ListenforGETorPOST
• Apache/PHPAlreadydoesthat!
• Requestsdon’thavetocomefromweb
browsers
• Getdatavia$_GET[‘varname’]and
$_POST[‘varname’]
• OutputXMLorJSON(oranything…but
structuremakesiteasiestforthepeopleusing
yourwebservice)
JSON
JavaScriptObjectNotation
JSONis
Alightweightdatainterchangeformat
AreplacementforXML
Humanreadable
Supportsbothhierarchicalandunordered
data
• Supportedbymostprogramminglanguages
• Supportedbymanymodernwebservices
•
•
•
•
– Flickr,Blogger,&c
DeclaringaJSONobject
varmydata={};
varmydata=newobject{}
NameValuePairs(unorderd)
varjs=
{“runs”:“client”,
“released”:1995”,
“type”:“scripting”};
AddingDepth
varlang={
js:{“runs”:“client”,
“released”:1995”,
“type”:“scripting”},
php:{“runs”:“server”,
“released”:1994”,
“type”:“scripting”}
};
Arrays(ordereddata)
varemployers=
{
colleges:[“Sage”,“HVCC”,“RPI”]
};