대용량 분산 아키 텍 쳐 설계 # 5 . rest by Terry Cho 42180 views 
 대용량 분산 아키 텍 쳐 설계 # 2 대용량 분산 시스템 아키 텍 쳐 디 . .. by Terry Cho 43671 views 
 대용량 분산 아키 텍 쳐 설계 # 1 아키 텍 쳐 설계 방법론 by Terry Cho 62352 views 
 대용량 분산 아키 텍 쳐 설계 # 4 . soa 아키 텍 쳐 by Terry Cho 42734 views 
 대용량 분산 아키 텍 쳐 설계 # 3 대용량 분산 시스템 아키 텍 쳐 by Terry Cho 45323 views 
 Global platform by Terry Cho 17388 views 
 Shitao Huang , Software Developer 
 MoeOhashi 
 Phuoc Le , Full - stack Developer at Groove Technology 
 Kelvin Meeks , Consulting Architectu / CTO at intltechventures . com 
 Herbert Abdillah , Student at State Islamic University Jakarta 
 1 . RESTful API DesignSecond EditionBrian Mulloy @ landlessness 11 . 03 . 11 @ 11 : 03 : 11 PSTApigee Dial - in or VoIP @ apigee See Details in Chat Window 
 4 . To be a RESTafarian or a Pragmatist ? 
 6 . Application developers are raison dêtre for APIs . 
 7 . Be pragmatic . For the bene ﬁ t of application developers . 
 8 . Pragmatic RESTful APIs are a design problem . 
 9 . baddesigns . com 
 10 . Paul Mijksenaar Design for Function Award 2011 
 11 . Let ’ s look at puppies . 
 12 . hackett hacketthackett hackett 
 13 . .../ getAllDogs / locationVerify / foodNeeded / createRecurringDogWalk / giveDirectOrder / healthCheck / g e tRecurringDogWalkSchedule / getLocation / getDog / massDogParty / getNewDogsSince / getRedDogs / getSittingDogs / dogStateChangesSearch / r e p l a c e S ittingDogsWithRunningDogs / saveDog . .. 
 14 . A puppy ’ s world is big . 
 15 . JnL law _ kevenSmithsonians National Zoo hackett 
 16 . ... . ../ getAllDogs / getAllLeashedDogs / verifyLocation / v erifyVeterinarianLocation / feedNeeded / feedNeededFood / createRecurringWakeUp / createRecurringMedication / giveDirectOrder / doDirectOwnerDiscipline / checkHealth / d o E x p r e ssCheckupWithVeterinarian / g etRecurringWakeUpSchedule / g e tRecurringFeedingSchedule / getLocation / getHungerLevel / getDog / g etSquirrelsChasingPuppies / newDog / newDogForOwner / getNewDogsSince / getNewDogsAtKennelSince / getRedDogs / getRedDogsWithoutSiblings / getSittingDogs / getSittingDogsAtPark / setDogStateTo / setLeashedDogStateTo / r e p l a c e S ittingDogsWithRunningDogs / r e p l a c e P a r k S ittingDogsWithRunningDogs / saveDog / saveMommaDogsPuppies . .. . .. 
 17 . We are on a slippery slope . 
 18 . Keep the simple things simple . 
 19 . Hopkinsii 
 20 . We only need two base URLs per resource . 
 21 . The ﬁ rst is for a collection . 
 22 . / dogs 
 23 . The second is for an element . 
 24 . / dogs / 1234 
 25 . POSTGETPUTDELETE 
 26 . CREATEREADUPDATEDELETE 
 27 . Resource POST GET PUT DELETE create read update delete replace create a delete all / dogs list dogs dogs with new dog dogs new dogs if exists treat as a update Bo collection / dogs / 1234 show Bo delete Bo create new if not dog in it create Bo Wikipedia 
 28 . Resource POST GET PUT DELETE create read update delete replace create a delete all / dogs list dogs dogs with new dog dogs new dogs treat as a if exists collection update Bo / dogs / 1234 create show Bo delete Bo new dog if not in it create Bo Wikipedia 
 29 . Resource POST GET PUT DELETE create read update delete bulk create a delete all / dogs list dogs update new dog dogs dogs if exists update Bo / dogs / 1234 error show Bo delete Bo if not error Wikipedia 
 30 . Verbs are bad . 
 31 . Nouns are good . 
 32 . Plurals or singulars ? 
 33 . Foursquare / checkinsGroupOn / dealsZappos / Product 
 34 . Plurals are better . / dogs 
 35 . Abstract or concrete naming ? 
 36 . Super High / thingsHigh / animalsMedium / dogsLow / beagles 
 37 . Concrete is better than abstract . / dogs 
 38 . What about associations ? 
 39 . GET / owners / 5678 / dogsPOST / owners / 5678 / dogs 
 40 . What about complex variations ? 
 41 . Cody Simms 
 42 . Sweep variations under the ‘?’ 
 44 . Hopkinsii 
 45 . / dogs 
 46 . What about errors ? 
 47 . meredithfarmer 
 50 . What about versioning ? 
 52 . / v 1 / dogs 
 53 . Please give me exactly what I need . 
 56 . What about pagination ? 
 57 . F a c e b o o k o f f s e t l i m i t T w i t t e r pagerppLinkedInstartcount 
 59 . What about formats ? 
 61 . / dogs . json / dogs / 1234 . json 
 62 . What about defaults ? 
 64 . What about attribute names ? 
 65 . Twitter " created _ at ": " Thu Nov 03 05 : 19 : 38 + 0000 2011 " Bing " DateTime ": " 2011 - 10 - 29 T 09 : 35 : 00 Z " Foursquare " createdAt ": 1320296464 
 68 . What about non - resource - y stuff ? 
 69 . CalculateTranslateConvert 
 71 . What about searching ? 
 73 . What about counts ? 
 74 . / dogs / count 
 75 . What about the rest of the URL ? 
 76 . Facebook graph . facebook . com api . facebook . com developers . facebook . comFoursquare api . foursquare . com developers . foursquare . com Twitter api . twitter . com search . twitter . com stream . twitter . com dev . twitter . com 
 77 . API gatewayapi . teachdogrest . comDeveloper connectiondevelopers . teachdogrest . comDo web redirectsapi ! developers ( if from browser ) dev ! developersdeveloper ! developers 
 78 . What about exceptional stuff ? 
 79 . Client intercepts HTTP error codes 
 82 . Client supports limited HTTP methods 
 84 . What about authentication ? 
 85 . PayPalPermissions Service APIFacebookOAuth 2 . 0 TwitterOAuth 1 . 0 a 
 86 . Use latest and greatest OAuthOAuth 2 . 0 Don ’ t do something close , but different . 
 87 . How do application developers use the API ? 
 88 . What about chatty applications ? 
 89 . First be complete & RESTful . Then provide shortcuts . 
 91 . What about when building an UIrequires a lot of domain knowledge ? 
 92 . Complement your API with codelibraries and SDK . 
 93 . Really ? All of this ? And iterate it ? 
 94 . Application API Virtualization LayerAPI API API 
 95 . Be RESTfulOnly 2 URLsNo verbsUse nouns as pluralsConcrete over abstractFor JSON follow JavaScript conventionsSweep complexity behind the ‘?’ Borrow from leading APIsAccount for exceptional clientsAdd virtualization layer 
 97 . THANK YOUSubscribe to API webinars at : youtube . com / apigee 
 98 . THANK YOUQuestions and ideas to : groups . google . com / group / api - craft 
 99 . THANK YOUContact me at : @ landlessnessbrian @ apigee . com