Slides from the talk given by Charlie van de Kerkhof during the CakeFest #3 - July 2009
Note: the original pdf and the code related to this talk can be found on cakephp.org
2. Goals
• RESTful with the correct HTTP code
• API like twitter to open up to the public in
the near future
• Smooth integration with code for the
website
• Return values HTML, XML and JSON
• Not necessarily the correct methods
(POST,GET,DELETE,PUT)
3. What is it?
• Link sharing (like del.icio.us) with groups
and users
• Comments on links
• Trusted group of friends
• Links are not necessarily bookmarks!
6. Models
• Baked the associations
• Basic validation in model
• AppModel: Using containable
• AppModel: Overwrite del() method for
using ‘status’ field in tables.
7. AppController
• Setting up helpers and components
• Mapping request methods to actions
• Defining up HTTP response codes
• Populate POST request to $this->data
Because this APP is also meant
to get data from HTML forms
8. GET Request
/links/view/primeminister.xml
• Controller => links, action => view
params[‘pass’][0] = ’primeminister’
• Check nickname variable
• Find the links from this user
• Set the results and options
11. Error occurs
f.i. nickname is not same as loggedin user
• Calls AppController::setError()
• setError() checks which request is made
(XML, JSON, HTML)
• When HTML is requested it calls the
Session::setFlash method
• Other requests it sets the viewVars and
renders the error template errcode & code:
errcode: to define f.e. 1007 what is missing.
For developers handy to program
Code: HTTP response code
16. Views
• Created generic template files
• XML: Xml::serialize with format=>tags
• JSON with $javascript->object($record);
• When necessary create template file in
views/{controller} folder to override
generic template
• Put this check in
AppController::beforeRender
26. • Loosely map request method (POST/
GET/...) to action
• For using in website and as API (!)
• Return response codes and Mento errors
• Easier for developer to check what error
• Rendering views based on generic template
• Tests on controller and viewVars (code)