Api design

3,719 views
3,621 views

Published on

API-design av Fredrik Bergljung, Valtech AB

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,719
On SlideShare
0
From Embeds
0
Number of Embeds
3,138
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Api design

  1. 1. API-designvad? varför? hur?måndag 3 juni 13
  2. 2. API-design: vad?måndag 3 juni 13
  3. 3. API-design: varför?måndag 3 juni 13
  4. 4. API-design: varför?måndag 3 juni 13
  5. 5. API-design: varför?måndag 3 juni 13
  6. 6. API-design: varför?måndag 3 juni 13
  7. 7. API-design: varför?måndag 3 juni 13
  8. 8. API-design: varför?måndag 3 juni 13
  9. 9. API-design: hur? HTTPmåndag 3 juni 13
  10. 10. API-design: hur? HTTPÒPOSTmåndag 3 juni 13
  11. 11. API-design: hur? HTTPÒPOSTÒGETmåndag 3 juni 13
  12. 12. API-design: hur? HTTPÒPOSTÒGETÒPUTmåndag 3 juni 13
  13. 13. API-design: hur? HTTPÒPOSTÒGETÒPUTÒDELETEmåndag 3 juni 13
  14. 14. API-design: hur? HTTPÒ10x : Tjena!måndag 3 juni 13
  15. 15. API-design: hur? HTTPÒ10x : Tjena!Ò20x : Cool.måndag 3 juni 13
  16. 16. API-design: hur? HTTPÒ10x : Tjena!Ò20x : Cool.Ò30x : Fråga hen därborta istället!måndag 3 juni 13
  17. 17. API-design: hur? HTTPÒ10x : Tjena!Ò20x : Cool.Ò30x : Fråga hen därborta istället!Ò40x : Vad f*n sysslar du med?!måndag 3 juni 13
  18. 18. API-design: hur? HTTPÒ10x : Tjena!Ò20x : Cool.Ò30x : Fråga hen därborta istället!Ò40x : Vad f*n sysslar du med?!Ò50x : Vad f*n sysslar vi med?!måndag 3 juni 13
  19. 19. API-design: hur? JSONmåndag 3 juni 13
  20. 20. API-design: hur? metoderÒverb + substantiv i ändpunktenmåndag 3 juni 13
  21. 21. API-design: hur? metoderÒverb + substantiv i ändpunktenÒmånga och specifika ändpunktermåndag 3 juni 13
  22. 22. API-design: hur? metoderÒverb + substantiv i ändpunktenÒmånga och specifika ändpunkterÒkräver en hel del dokumentationmåndag 3 juni 13
  23. 23. API-design: hur? metoderÒ/createProductmåndag 3 juni 13
  24. 24. API-design: hur? metoderÒ/createProductÒ/getProductmåndag 3 juni 13
  25. 25. API-design: hur? metoderÒ/createProductÒ/getProductÒ/getOrCreateProductmåndag 3 juni 13
  26. 26. API-design: hur? metoderÒ/createProductÒ/getProductÒ/getOrCreateProductÒ/setProductNamemåndag 3 juni 13
  27. 27. API-design: hur? metoderÒ/createProductÒ/getProductÒ/getOrCreateProductÒ/setProductNameÒ/setProductCategorymåndag 3 juni 13
  28. 28. API-design: hur? metoderÒ/createProductÒ/getProductÒ/getOrCreateProductÒ/setProductNameÒ/setProductCategoryÒ/setProductTagmåndag 3 juni 13
  29. 29. API-design: hur? metoderÒ/createProductÒ/getProductÒ/getOrCreateProductÒ/setProductNameÒ/setProductCategoryÒ/setProductTagÒ/deleteProductmåndag 3 juni 13
  30. 30. API-design: hur? metoderÒ/createProductÒ/getProductÒ/getOrCreateProductÒ/setProductNameÒ/setProductCategoryÒ/setProductTagÒ/deleteProductÒ/getAllProductsmåndag 3 juni 13
  31. 31. API-design: hur? metoderÒ/createProductÒ/getProductÒ/getOrCreateProductÒ/setProductNameÒ/setProductCategoryÒ/setProductTagÒ/deleteProductÒ/getAllProductsÒ/findProductsByTagmåndag 3 juni 13
  32. 32. API-design: hur? metoderÒ/createProductÒ/getProductÒ/getOrCreateProductÒ/setProductNameÒ/setProductCategoryÒ/setProductTagÒ/deleteProductÒ/getAllProductsÒ/findProductsByTagÒ/findProductsByCategorymåndag 3 juni 13
  33. 33. API-design: hur? metoderÒ/createProductÒ/getProductÒ/getOrCreateProductÒ/setProductNameÒ/setProductCategoryÒ/setProductTagÒ/deleteProductÒ/getAllProductsÒ/findProductsByTagÒ/findProductsByCategoryÒ/findProductsByTagAndCategorymåndag 3 juni 13
  34. 34. API-design: hur? metoderÒ/createProductÒ/getProductÒ/getOrCreateProductÒ/setProductNameÒ/setProductCategoryÒ/setProductTagÒ/deleteProductÒ/getAllProductsÒ/findProductsByTagÒ/findProductsByCategoryÒ/findProductsByTagAndCategoryÒ/getProductImagesByProductIdmåndag 3 juni 13
  35. 35. API-design: hur? metoderÒ/createProductÒ/getProductÒ/getOrCreateProductÒ/setProductNameÒ/setProductCategoryÒ/setProductTagÒ/deleteProductÒ/getAllProductsÒ/findProductsByTagÒ/findProductsByCategoryÒ/findProductsByTagAndCategoryÒ/getProductImagesByProductIdÒ/getProductCategoriesByTagsmåndag 3 juni 13
  36. 36. API-design: hur? RESTmåndag 3 juni 13
  37. 37. API-design: hur? domänmodellÒfärre ändpunkterÒendast substantivÒPOST, PUT, GET, DELETE, (PATCH)Òanvändardokumentation krävs för t.ex. flödenmåndag 3 juni 13
  38. 38. API-design: hur? domänmodellÒ/api/productsmåndag 3 juni 13
  39. 39. API-design: hur? domänmodellÒ/api/productsÒ/api/products/[id]måndag 3 juni 13
  40. 40. API-design: hur? domänmodellÒ/api/productsÒ/api/products/[id]Ò/api/products/[id]/imagesmåndag 3 juni 13
  41. 41. API-design: hur? domänmodellmåndag 3 juni 13
  42. 42. API-design: hur? domänmodellmåndag 3 juni 13
  43. 43. API-design: hur? H.A.T.E.O.A.S!måndag 3 juni 13
  44. 44. API-design: hur? H.A.T.E.O.A.S!A REST API should be enteredWITH NO PRIOR KNOWLEDGEbeyond the initial URI ...Failure here implies that out-of-band information is drivinginteraction instead ofhypertext.måndag 3 juni 13
  45. 45. API-design: hur? H.A.T.E.O.A.S!måndag 3 juni 13
  46. 46. API-design: hur? användningsfallÒlänkar i responset till möjliga nästa stegmåndag 3 juni 13
  47. 47. API-design: hur? användningsfallÒlänkar i responset till möjliga nästa stegÒminimerar krav på dokumentationmåndag 3 juni 13
  48. 48. API-design: hur? användningsfallÒlänkar i responset till möjliga nästa stegÒminimerar krav på dokumentationÒytterligare ett abstraktionslagermåndag 3 juni 13
  49. 49. API-design: hur? användningsfallÒ/apimåndag 3 juni 13
  50. 50. API-design: hur? användningsfallmåndag 3 juni 13
  51. 51. API-design: hur? användningsfallmåndag 3 juni 13
  52. 52. API-design: hur? användningsfallmåndag 3 juni 13
  53. 53. API-design: hur? användningsfallmåndag 3 juni 13
  54. 54. API-design: hur? användningsfallmåndag 3 juni 13
  55. 55. API-design: hur? användningsfallmåndag 3 juni 13
  56. 56. API-design: hur? användningsfallmåndag 3 juni 13
  57. 57. API-design: hur? användningsfallmåndag 3 juni 13
  58. 58. API-design: hur? användningsfallmåndag 3 juni 13
  59. 59. API-design: hur? användningsfallmåndag 3 juni 13
  60. 60. API-design: hur? användningsfallmåndag 3 juni 13
  61. 61. API-design: hur? användningsfallmåndag 3 juni 13
  62. 62. API-design: hur?ÒVärdet uppstår i användandetmåndag 3 juni 13
  63. 63. API-design: hur?ÒVärdet uppstår i användandetÒAPI = ful webbplats™måndag 3 juni 13
  64. 64. API-design: hur?ÒVärdet uppstår i användandetÒAPI = ful webbplats™ÒKeep It Simple, Stupid!måndag 3 juni 13
  65. 65. FRÅGOR?måndag 3 juni 13
  66. 66. API-design: fördjupningÒ Eric S Raymond: “The Art of UNIX Programming”måndag 3 juni 13
  67. 67. API-design: fördjupningÒ Eric S Raymond: “The Art of UNIX Programming”Ò Roy Fielding: “REST APIs must be hypertext driven”Òhttp://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-drivenmåndag 3 juni 13
  68. 68. API-design: fördjupningÒ Eric S Raymond: “The Art of UNIX Programming”Ò Roy Fielding: “REST APIs must be hypertext driven”Òhttp://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-drivenÒ Rickard Öberg: “The Road To Rest”Òhttp://www.infoq.com/presentations/REST-API-HATEOASmåndag 3 juni 13
  69. 69. API-design: fördjupningÒ Eric S Raymond: “The Art of UNIX Programming”Ò Roy Fielding: “REST APIs must be hypertext driven”Òhttp://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-drivenÒ Rickard Öberg: “The Road To Rest”Òhttp://www.infoq.com/presentations/REST-API-HATEOASÒ Les Hazlewood: “REST+JSON API Design”Òhttp://www.youtube.com/watch?v=hdSrT4yjS1gmåndag 3 juni 13
  70. 70. TACK!fredrik.bergljung@valtech.se @barbichemåndag 3 juni 13

×