Building custom APIs
Upcoming SlideShare
Loading in...5
×
 

Building custom APIs

on

  • 1,707 views

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 cakephp.org

Statistics

Views

Total Views
1,707
Views on SlideShare
1,696
Embed Views
11

Actions

Likes
1
Downloads
26
Comments
0

2 Embeds 11

http://www.pierre-martin.fr 9
http://www.slideshare.net 2

Accessibility

Categories

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.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
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 del.icio.us) 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: http://www.cake-toppings.com IRC: primeminister Twitter: http://twitter.com/charli3