Building custom APIs
Upcoming SlideShare
Loading in...5

Building custom APIs



Slides from the talk given by Charlie van de Kerkhof during the CakeFest #3 - July 2009

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



Total Views
Views on SlideShare
Embed Views



2 Embeds 11 9 2



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.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Building custom APIs Building custom APIs Presentation Transcript

  • Courier New Bold 18 pt Charlie-preso Building a custom API by Charlie van de Kerkhof (primeminister) CakeFest #3 July 2009
  • 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)
  • What is it? • Link sharing (like with groups and users • Comments on links • Trusted group of friends • Links are not necessarily bookmarks!
  • Setup • Database • Routes • Model • Controller • Views (HTML, XML & JSON) • Tests
  • Database
  • Models • Baked the associations • Basic validation in model • AppModel: Using containable • AppModel: Overwrite del() method for using ‘status’ field in tables.
  • 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
  • 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
  • APP/controllers/links_controller.php
  • 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
  • APP/controllers/links_controller.php
  • APP/app_controller.php
  • continue... APP/app_controller.php
  • continue... APP/app_controller.php
  • 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
  • APP/views/generic/xml/view.ctp
  • APP/views/generic/json/view.ctp
  • APP/views/links/xml/view.ctp
  • Links view (XML) /links/view/primeminister.xml?limit=2&page=3
  • Error view (XML)
  • Routes
  • Controller tests • Test made on controller actions • Checks for view variables • errocode & code check • Don’t forget to check on errors!
  • tests/cases/controllers/links_controllers.test.php
  • Summarize
  • • 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)
  • Question (& Answers?)
  • Thanks! Web: IRC: primeminister Twitter: