Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The API Dilemma

The API Dilemma

Creating a good, useful and functional API for your application can be one of the most difficult parts of a project. With more and more things becoming API-powered, it's important to plan well and provide what the user expects. I'll look at some principles you can follow to make sure the API you write is the right one, both from the developer perspective and what you, as a user, should expect of a quality web service API.

Chris Cornutt

June 08, 2012
Tweet

More Decks by Chris Cornutt

Other Decks in Technology

Transcript

  1. 5)&"1*%*-&.."
    Making Useful Web Services
    Chris Cornutt
    Dutch PHP Conference 2012
    Friday, June 8, 2012

    View Slide

  2. They must be...
    Friday, June 8, 2012

    View Slide

  3. '6/$5*0/"-
    They must be...
    Friday, June 8, 2012

    View Slide

  4. '6/$5*0/"-
    They must be...
    ."*/5"*/"#-&
    Friday, June 8, 2012

    View Slide

  5. '6/$5*0/"-
    They must be...
    ."*/5"*/"#-&
    4&/4*#-&
    Friday, June 8, 2012

    View Slide

  6. What Are APIs?
    APIs are your public face to the
    developers of the world.
    They are the gatekeepers to your
    data and the heart of your
    applications. They can give control
    and they can take it away...
    think wisely about your choices.
    Friday, June 8, 2012

    View Slide

  7. More Formally?
    APIs (Application Programming
    Interfaces) bridge applications,
    providing a standardized method
    for interaction.
    A contract of request and response
    makes them useful.
    Documentation is their
    guidebook.
    Friday, June 8, 2012

    View Slide

  8. #&'03&$0%&
    Community
    Friday, June 8, 2012

    View Slide

  9. Web Service or Go Home
    ✤$6450.&34#&$0.&"44&54
    ✤40$*"-"1148*--%*&8*5)0655)&.
    ✤01&/%"5"#6*-%453645
    ✤64&'6-'6/$5*0/"-)"11:%&74
    Friday, June 8, 2012

    View Slide

  10. Design
    Thinking
    Technology as a Tool to
    meet the User’s needs
    Friday, June 8, 2012

    View Slide

  11. Design Thinking Defined
    Friday, June 8, 2012

    View Slide

  12. Design Thinking Defined
    "TBTUZMFPGUIJOLJOH JUJTHFOFSBMMZDPOTJEFSFEUIFBCJMJUZUP
    DPNCJOFFNQBUIZGPSUIFDPOUFYUPGBQSPCMFN DSFBUJWJUZJOUIF
    HFOFSBUJPOPGJOTJHIUTBOETPMVUJPOT BOESBUJPOBMJUZUPBOBMZ[FBOE
    pUTPMVUJPOTUPUIFDPOUFYU
    Friday, June 8, 2012

    View Slide

  13. Design Thinking Defined
    "TBTUZMFPGUIJOLJOH JUJTHFOFSBMMZDPOTJEFSFEUIFBCJMJUZUP
    DPNCJOFFNQBUIZGPSUIFDPOUFYUPGBQSPCMFN DSFBUJWJUZJOUIF
    HFOFSBUJPOPGJOTJHIUTBOETPMVUJPOT BOESBUJPOBMJUZUPBOBMZ[FBOE
    pUTPMVUJPOTUPUIFDPOUFYU 8JLJQFEJB
    Friday, June 8, 2012

    View Slide

  14. Design Thinking Defined
    ✤40-7&64&3130#-&.4
    "TBTUZMFPGUIJOLJOH JUJTHFOFSBMMZDPOTJEFSFEUIFBCJMJUZUP
    DPNCJOFFNQBUIZGPSUIFDPOUFYUPGBQSPCMFN DSFBUJWJUZJOUIF
    HFOFSBUJPOPGJOTJHIUTBOETPMVUJPOT BOESBUJPOBMJUZUPBOBMZ[FBOE
    pUTPMVUJPOTUPUIFDPOUFYU 8JLJQFEJB
    Friday, June 8, 2012

    View Slide

  15. Design Thinking Defined
    ✤40-7&64&3130#-&.4
    ✤.03&5)"/l5)*/,*/(z *5`4%0*/(
    "TBTUZMFPGUIJOLJOH JUJTHFOFSBMMZDPOTJEFSFEUIFBCJMJUZUP
    DPNCJOFFNQBUIZGPSUIFDPOUFYUPGBQSPCMFN DSFBUJWJUZJOUIF
    HFOFSBUJPOPGJOTJHIUTBOETPMVUJPOT BOESBUJPOBMJUZUPBOBMZ[FBOE
    pUTPMVUJPOTUPUIFDPOUFYU 8JLJQFEJB
    Friday, June 8, 2012

    View Slide

  16. Design Thinking Defined
    ✤40-7&64&3130#-&.4
    ✤.03&5)"/l5)*/,*/(z *5`4%0*/(
    ✤*%&"5*0/
    "TBTUZMFPGUIJOLJOH JUJTHFOFSBMMZDPOTJEFSFEUIFBCJMJUZUP
    DPNCJOFFNQBUIZGPSUIFDPOUFYUPGBQSPCMFN DSFBUJWJUZJOUIF
    HFOFSBUJPOPGJOTJHIUTBOETPMVUJPOT BOESBUJPOBMJUZUPBOBMZ[FBOE
    pUTPMVUJPOTUPUIFDPOUFYU 8JLJQFEJB
    Friday, June 8, 2012

    View Slide

  17. What a User Wants
    ✤%0/`5#&:06 #&5)&.
    ✤.&/5"-4)*'5
    ✤5&$)%0&4/`5."55&3&9$&15
    ✤(&5*53*()55)&'*3455*.&03%0/`5
    ✤(00%%0$40/-:(040'"3
    Friday, June 8, 2012

    View Slide

  18. Informed Users are Happy Users
    ✤*/16506165*4"45"35
    ✤&9".1-&4$0%&
    ✤26*$,45"35
    ✤8"/55)&.50-07&:06 -*#3"3*&4
    ✤$0..0/5&3.4
    Friday, June 8, 2012

    View Slide

  19. 5)&'*/&-*/&
    Power to the People
    Friday, June 8, 2012

    View Slide

  20. Friday, June 8, 2012

    View Slide

  21. YOU ARE HERE
    Friday, June 8, 2012

    View Slide

  22. YOU ARE HERE
    Friday, June 8, 2012

    View Slide

  23. Grow Around It
    ✤'*/%5)&&9$*5&.&/5
    ✤.",&40.&5)*/(64&'6-
    ✤4)"3&8)"5:06$"/
    ✤64&3'&&%#"$,5)064"/%803%4
    ✤-&55)&.)"7&3&4063$&4
    Friday, June 8, 2012

    View Slide

  24. Is All Too Much?
    ✤'-&9*#*-*5:*4"45"5&0'.*/%
    ✤8*5)(3&"5108&3
    ✤l"1*-*5&z
    ✤l#&$"64&8&$"/z
    Friday, June 8, 2012

    View Slide

  25. Be Careful What You Wish For
    ✤'&&%#"$, -*,&*503/05

    ✤5)&/&&%'03%&%*$"5&%4611035
    ✤5&455)&-*.*54
    ✤-*45&/
    Friday, June 8, 2012

    View Slide

  26. #&'03&$0%&
    Standards
    Friday, June 8, 2012

    View Slide

  27. Step 1 - Plan, Step 2 - Plan, Step 3...
    ✤(00%$0%&'03(00%4&37*$&
    ✤%0/`553:'03
    ✤4."--&453&64"#-&1*&$&4
    ✤/".*/($0/7&/5*0/4
    ✤#&7&3#04&#65/05803%:
    ✤0#+&$54 /054&37*$&4
    Friday, June 8, 2012

    View Slide

  28. 5)&&5&3/"-26&45
    Talking The Right
    Tech
    Friday, June 8, 2012

    View Slide

  29. Friday, June 8, 2012

    View Slide

  30. TRS-80 Model III
    32 years ago...
    Friday, June 8, 2012

    View Slide

  31. Avoid the “If only...”
    ✤*'*5%0&4/`5803, %0/`564&*5
    ✤'0$640/41&&%"/%1&3'03."/$&
    ✤-*()55)&/)&"7:
    ✤%0/`5l-&",z
    ✤/00/&$"3&4"#065:063-*.*54
    Friday, June 8, 2012

    View Slide

  32. Plan for the Future
    ✤3"5&-*.*5*/(
    ✤"65)&/5*$"5*0/
    ✤13*7"$: %"5"/&5803,

    ✤$-06%:$-06%$-06% %&1-0:.&/5

    Friday, June 8, 2012

    View Slide

  33. More Code, More Features
    ✤l40'5-"6/$)&4z
    ✤7&34*0/*/(
    ✤40-7&130#-&.4 %0/`5#6*-%'&"563&4
    ✤$0)&4*0/
    Friday, June 8, 2012

    View Slide

  34. Is REST The Answer?
    ✤40"1 :&4 *5`4"%*35:803%

    ✤9.-31$
    ✤$6450.
    ✤.&44"(*/(7&3464.&44"(&
    Friday, June 8, 2012

    View Slide

  35. What Do You Have Inside?
    ✤8)"5:06)"7&
    ✤8)"5:06/&&%
    ✤015*.*;&8)"5`4/&&%&%
    ✤40'58"3&7&3464)"3%8"3&
    ✤4&$63*5:
    Friday, June 8, 2012

    View Slide

  36. Keep The Flow Going
    ✤1&3'03."/$&5&45*/(
    ✤-0"%5&45*/(
    ✤$0.10/&/54"/%4:45&.
    ✤'6/$5*0/"-5&45*/(
    ✤4&37*$&-&7&-"(3&&.&/54
    Friday, June 8, 2012

    View Slide

  37. -00,*/(")&"%
    Trends in APIs
    Friday, June 8, 2012

    View Slide

  38. API2.0
    Friday, June 8, 2012

    View Slide

  39. Less General, More Focus
    ✤"1*4'03"3&"40/
    ✤5"3(&5"6%*&/$&
    ✤l"650."5&%0654063$*/(z
    ✤8)*5&-"#&-
    Friday, June 8, 2012

    View Slide

  40. A Few Examples...
    ✤&$0..&3$&
    ✤7*3644$"//*/(%&5&$5*0/
    ✤(&0(3"1)*$4&37*$&4
    ✤5"4,&9&$65*0/
    ✤&7&/5."/"(&.&/5
    ✤4&37&3."/"(&.&/5$0/530-
    Friday, June 8, 2012

    View Slide

  41. APIs are the
    language
    and the
    future
    of the web.
    are you in or out?
    Friday, June 8, 2012

    View Slide

  42. https://joind.in/6241
    Chris Cornutt
    [email protected]
    @enygma / @phpdeveloper / @phpquickfix
    Friday, June 8, 2012

    View Slide

  43. Orange pattern: http://www.flickr.com/photos/chapter3/3939313515/
    Red Abstract: http://www.flickr.com/photos/ellenm1/5397931339/in/photostream/
    TRS-80: http://www.flickr.com/photos/[email protected]/4820561313/in/set-72157624564641788
    Photo Credits
    https://joind.in/6241
    Speakers Love Feedback! Rate Me!
    Friday, June 8, 2012

    View Slide