HTTP APIãRESTãããã³HATEOAS
çŸåšãHTTP APIã¯æ¬¡ã®ããã«åé¡ã§ããŸãã
- WebãµãŒãã¹
- RPC URIãã³ããªã³ã°
- HTTPããŒã¹ã®ã¿ã€ã1
- HTTPããŒã¹ã®ã¿ã€ã2
- REST
ããã«ã€ããŠã¯ ãJon Algermissenã«ããéåžžã«è¯ã説æããããŸãã æ®å¿µãªãããAPIãæäŸãã人ã¯èª°ã§ãRESTfulãµãŒãã¹ãåŒã³åºããŸãã
ããã§ã¯ãæ¬åœã®RESTfulãµãŒããŒãšã¯äœã§ããããïŒ ããã¯ããã€ããŒããã¹ã/ãã€ããŒã¡ãã£ã¢ããŒã¹ã®APIã§ãã ã€ãŸãããµãŒãããŒãã£ã®éçºè ãŸãã¯ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã¯ãã«ãŒãAPI URLãä»ããŠãä»ã®å©çšå¯èœãªãªãœãŒã¹ãã«é¢ããæ å ±ãååŸã§ããå¿ èŠããããŸãã ããã¯ãRESTful APIãå®è£ ããéã«å®éã«æãéèŠãªæ¡ä»¶ã§ãã ãŸããHATEOASã®ååã«æºæ ããŠãããã®ã®ã¿ããå®éã®RESTfulãµãŒããŒãšèŠãªãããšãã§ããŸãã
HATEOAS-ã¢ããªã±ãŒã·ã§ã³ç¶æ ã®ãšã³ãžã³ãšããŠã®ãã€ããŒã¡ãã£ã¢
HATEOASãå®è£ ããéã«åŸãã¹ã2ã€ã®äž»ãªååã¯æ¬¡ã®ãšããã§ãã
- ãã€ããŒã¡ãã£ã¢ãªãœãŒã¹ã®ã¿ããµãŒãã¹ããŸãã ãã€ããŒãªã³ã¯ãªãœãŒã¹ã¯ãã³ã³ãã³ããšä»ã®ãã€ããŒãªã³ã¯ãªãœãŒã¹ãžã®ãã€ããŒãªã³ã¯ã®ã¿ãå«ããªãœãŒã¹ã§ãã JSONïŒapplication / jsonïŒã¯ãã€ããŒãªã³ã¯ãªãœãŒã¹ã§ã¯ãããŸããã ïŒäžæ¹ã§ãJSONããµããŒãããRESTfulã®HATEOASãµãŒããŒãå€æ°ãããŸãïŒãã ããè¿œå ã®ãã£ãŒã«ããJSONã«è¿œå ããŠãJSONããã€ããŒãªã³ã¯ãªãœãŒã¹ãšããŠæ©èœãããããšãã§ããŸãã ïŒäŸïŒå¯Ÿå¿ããç»åãµã ãã€ã«ãžã®ãªã³ã¯ã®hrefãã£ãŒã«ãïŒ
- ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã®åäžã®ãšã³ããªãã€ã³ãã APIããŒã ããŒãžãããåŸç¶ã®GETåŒã³åºãã察å¿ããURLãžã®ãªã³ã¯ãšããŠããŸãåŸç¶ã®ãPOSTãããPUTããŸãã¯ãDELETEããªã¯ãšã¹ãããã©ãŒã ã®åœ¢åŒã§äœæããå¿ èŠããããŸãã
æ°ããAPIã§HATEOASã䜿çšããŠããŸããïŒ
ããïŒ
ãªãã§ïŒ ãããŸã§ãAPIã¯ã»ãšãã©ãWebã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšããããã«äœæãããŠããŸããã ãããã®ãµãŒããŒã¯éåžžXHTMLãè¿ããã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã¯ãã©ãŠã¶ãŒã§å®è¡ãããŸããã ãã®ãããªã¹ããŒã ã®ãã©ãŠã¶ã¯ãã¢ãã€ã«ã¯ã©ã€ã¢ã³ãã«äŒŒãŠããŸããã¢ãã€ã«ã¯ã©ã€ã¢ã³ãã¯ããã€ããŒãªã³ã¯ãªãœãŒã¹ã解æãããã©ãŒã ãäœã§ããããšãããããŠãŒã¶ãŒã«æ瀺ããæ¹æ³ãç¥ã£ãŠããŸãã ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã®å ŽåãRESTfulãµãŒããŒã®å¿çã«ããµãŒããŒã«ããŒã¿ãéä¿¡ã§ãããã©ãŒã ãå«ãŸããŠããå Žåããã©ãããã©ãŒã ã§äœ¿çšå¯èœãªãã€ãã£ãã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ã«å€æããããšã¯ã§ããŸããïŒå°ãªããšãäœåãªåŽåãªãã§ïŒã Apple / GoogleãŸãã¯Microsoftã®ãããã®ãã©ãããã©ãŒã ãããã€ããŒããXHTMLãã©ãŒã ãUIViewControllerïŒiOSïŒãŸãã¯IntentïŒAndroidïŒãŸãã¯Silverlight PageïŒWindows PhoneïŒã«å€æããããšããµããŒãããŠããŸããã GETãªã¯ãšã¹ããžã®å¿çãšããŠãã€ããŒãªã³ã¯ãªãœãŒã¹ã®åºåã䜿çšãããã¹ãŠã®POST / PUTããã³DELETEãªã¯ãšã¹ãã«å¯ŸããŠïŒãã©ãŒã ã®ä»£ããã«ïŒã³ã³ãããŒã©ãŒã¡ãœãããžã®åŒã³åºããæäŸããããšããå§ãããŸãã ïŒäŸïŒ/å人/è¿œå ãŸãã¯/äŒå Ž/ãã§ãã¯ã€ã³ïŒã³ã³ãããŒã©ãŒã¡ãœãããžã®åŒã³åºãã¯ãä»ã®åçã«åã蟌ãããšãã§ããŸãïŒã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ãŸãã¯éçºè ããããã«ã€ããŠç¥ãããšãã§ããããã«ïŒã ãã¡ãããããã¯RESTã®ååã«éåããŸãããããã§ãããŸããŸããã å®éã«ã¯ã»ãšãã©åœ¹ã«ç«ããªãæšæºã«ç²ç®çã«åŸãããããé«å質ã®è£œåãäœãæ¹ãè¯ãã ïŒããã«ãããããããAPIãHTTPããŒã¹ã®ã¿ã€ã2ã«ãªããŸãïŒã
ãã£ãã·ã³ã°
ãã£ãã·ã³ã°ã«æž¡ããŸãã å€ãã®äººãä¿¡ããŠããããã«ããã£ãã·ã¥ã¯åºæ¬çã«ã¯ã©ã€ã¢ã³ãã¿ã¹ã¯ïŒãŸãã¯äžéãããã·ã¿ã¹ã¯ïŒã§ãã ãããããµãŒããŒåŽã®éçºã«ã»ãšãã©åŽåãè²»ããããšãªããAPIãäžéãã£ãã·ã³ã°ãããã·ã®èŠä»¶ã«å®å šã«é©åãããããšãã§ããããšãç¥ã£ãŠããŸããïŒ ã€ãŸããç¡æã®ããŒããã©ã³ã·ã³ã°ãåãåãããšã«ãªããŸãã å¿ èŠãªãã®ã¯ãHTTPä»æ§ã®ç¬¬13ç« ã§èª¬æãããŠããŸã ã
å°ãåãã¢ãŒããã€ã©ãŒã¯ãã€ãŒãããŸããã
ã2ã€ã®æ°ããã«ãŒã«ãæãä»ããŸããã1ïŒã¢ããªã±ãŒã·ã§ã³ã®é床ãäœäžããå Žåã¯ããã£ãã·ã¥ãè¿œå ããŸãã2ïŒã¢ããªã±ãŒã·ã§ã³ã«ãã°ãããå Žåã¯ããã£ãã·ã¥ãåé€ããŸãã
ããããä¿¡ããŠãã ããããã£ãã·ã³ã°ã¯ãã®ãããªåé¡ã«ééããããšãªãå®è£ ã§ããŸãã åŸãããšããå§ããã2ã€ã®äž»ãªååã¯æ¬¡ã®ãšããã§ãã
- ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã§ã«ã¹ã¿ã ãã£ãã·ã¥ã¹ããŒã ãäœæããããšããªãã§ãã ããã
- RFC HTTP 1.1ä»æ§ã§èª¬æãããŠããåºæ¬çãªãã£ãã·ã¥ååãç解ããŠãã ããã ããã§2ã€ã®ãã£ãã·ã¥ã¢ãã«ã説æãããŠããŸãã 劥åœæ§ã¢ãã«ãšåŠ¥åœæ§ã¢ãã«ã
ã¯ã©ã€ã¢ã³ããµãŒããŒã¢ããªã±ãŒã·ã§ã³ã§ã¯ããµãŒããŒã¯ä¿¡é Œã§ããæ å ±æºã§ãã ãµãŒããŒã®APIãããªãœãŒã¹ïŒããŒãžãŸãã¯å¿çïŒãããŠã³ããŒããããšããµãŒããŒã¯ã¯ã©ã€ã¢ã³ãã«ãç¹ã«ã¯ã©ã€ã¢ã³ããåä¿¡ãããªãœãŒã¹ããã£ãã·ã¥ããæ¹æ³ã«é¢ããè¿œå ã®ããã³ãããéä¿¡ããŸãã ãµãŒããŒã¯ããã£ãã·ã¥ãããæ å ±ã®æå¹æéãåãããã«ãªããšãã¯ã©ã€ã¢ã³ãã«æ£åŒã«éç¥ããŸãã ãããã®ããã³ããã¯ãããã°ã©ã ãšãµãŒããŒæ§æã®äž¡æ¹ã§éä¿¡ã§ããŸãã æå¹æéã¢ãã«ã¯éåžžããµãŒããŒã®æ§æãéããŠå®è£ ãããŸãããæå¹æ§ã¢ãã«ã«ã¯ãµãŒããŒåŽã®éçºè ã«ãããœãããŠã§ã¢å®è£ ãå¿ èŠã§ãã æå¹æéããã€äœ¿çšããããæå¹æéã¯è¿ããããªãœãŒã¹ã®ã¿ã€ãã«åºã¥ããŠæ±ºå®ããã®ã¯éçºè ã§ãã éåžžãæå¹æéã¢ãã«ã¯ãç¹å®ã®ãªãœãŒã¹ã®æå¹æéããµãŒããŒãæ確ã«æ±ºå®ã§ããå Žåã«äœ¿çšãããŸãã æå¹æ§ã¢ãã«ã¯ãä»ã®ãã¹ãŠã®å Žåã«äœ¿çšãããŸãã åŸã§ããµãŒããŒéçºäžã«ãããã®ã¢ãã«ã®äž¡æ¹ãå®è£ ããæ¹æ³ã瀺ããŸãã äž¡æ¹ã«å¯ŸåŠãããããã«ãããããã䜿çšããã¿ã€ãã³ã°ã瀺ããŸãã
æå¹æéã¢ãã«
äžè¬çãªãã£ãã·ã³ã°æ§æãèŠãŠã¿ãŸãããã nginxã䜿çšããå Žåãããããèšå®ã«é¡äŒŒãããã®ããããŸãã
location ~ \.(jpg|gif|png|ico|jpeg|css|swf)$ { expires 7d; }
nginxã¯ãããã®èšå®ãé©åãªHTTPããããŒã«å€æããŸãã ãã®å ŽåããµãŒããŒã¯ãã¹ãŠã®ç»åã®ããããŒã§ãExpiresããŸãã¯ãCache-ControlïŒmax-age = nããã£ãŒã«ããéä¿¡ããã¯ã©ã€ã¢ã³ãããããã7æ¥éãã£ãã·ã¥ããããšãæ³å®ããŠããŸãã ããã¯ãä»åŸ7æ¥éåãããŒã¿ãèŠæ±ããå¿ èŠããªãããšãæå³ããŸãã äžè¬çãªãã©ãŠã¶ïŒããã³äžéãããã·ïŒã¯ããããããã®ããããŒãå°éããæåŸ ã©ããã«æ©èœããŸãã æ®å¿µãªããã人æ°ã®ããSDWebImageãå«ãiOSçšã®ã»ãšãã©ã®ãªãŒãã³ãœãŒã¹ç»åãã£ãã·ã¥ãã¬ãŒã ã¯ãŒã¯ã¯ãnæ¥åŸã«ç»åãåã«åé€ããçµã¿èŸŒã¿ã®ãã£ãã·ã¥ã¡ã«ããºã ã䜿çšããŸãã åé¡ã¯ããã®ãããªãã¬ãŒã ã¯ãŒã¯ã劥åœæ§ã¢ãã«ã«å¯Ÿå¿ããããããã®ãã¬ãŒã ã¯ãŒã¯ã䜿çšããã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ãéæšæºãœãªã¥ãŒã·ã§ã³ïŒããã¯ïŒã«é ŒããããåŸãªãããšã§ãã ããã§äœãããŸããããªããã瀺ãäŸã瀺ããŸãã ãæ°ããFacebookãã«æ»ããŸãããã ãŠãŒã¶ãŒããµãŒããŒã«ã¢ãã¿ãŒãã¢ããããŒããããšãããŠãŒã¶ãŒã¯å€æŽããã¹ãŠã®ãã¥ãŒã«åæ ããããšä¿¡ããŠããŸãã ããã€ãã®ããªãããŒãªéçºè ã¯ãupdate-profile-imageåŒã³åºãã®æååŸã«ããŒã«ã«ãã£ãã·ã¥ãã¯ãªã¢ããŸãã ïŒããã¯ããã¹ãŠã®ã³ã³ãããŒã©ãŒãæ°ããæ¹æ³ã§ãµãŒããŒããç»åãããŠã³ããŒãããå¿ èŠãããããšãæå³ããŸãïŒã ãã¹ãŠãããŸãæ©èœãããããžã§ã¯ããããŒãžã£ãŒã«å ±åãããšãåãã¥ãŒã§ææ°ã®ãããã£ãŒã«ç»åã衚瀺ãããŸãã ãã ããããã§åé¡ãå®å šã«è§£æ±ºãããããã§ã¯ãããŸããã 圌ã®å人ã¯ããŠãŒã¶ãŒã®æ°ããã¢ãã¿ãŒã7æ¥åŸã«è¡šç€ºããŸãã 絶察ã«åãå ¥ããããŸããã ããã§ããã解決ããæ¹æ³ã¯ïŒ å ã»ã©èšã£ãããã«ããµãŒããŒã ããä¿¡é Œã§ããããŒã¿ã®ãœãŒã¹ã«ãªãããšãã§ãããšãã声æãåãå ¥ããªããã°ãªããŸããã ãã£ãã·ã¥ãããã³ã³ãã³ããæ©æã«æéåãã«ããŠãã£ãã·ã¥ãæŽæ°ããããã«ãã¯ã©ã€ã¢ã³ãã§äžæ£ãªããªãã¯ã䜿çšããªãã§ãã ããã
劥åœæ§ã¢ãã«
FacebookãšTwitterã¯ãæå¹æ§ã¢ãã«ã䜿çšããŠãïŒæ°ããç»åãã¢ããããŒããããåŸã®ïŒå€ããããã¡ã€ã«ç»åã®åé¡ã解決ããŸãã 劥åœæ§ã¢ãã«ã§ã¯ããµãŒããŒã¯äžæã®ãªãœãŒã¹èå¥åãã¯ã©ã€ã¢ã³ãã«éä¿¡ããã¯ã©ã€ã¢ã³ãã¯èå¥åãšå¿çã®äž¡æ¹ããã£ãã·ã¥ããŸãã HTTPã«é¢ããŠã¯ããã®äžæã®èå¥åã¯ETagãšåŒã°ããŸãã åããªãœãŒã¹ã«å¯ŸããŠ2çªç®ã®ãªã¯ãšã¹ããè¡ãå ŽåããããETagã«éä¿¡ããå¿ èŠããããŸãã ãµãŒããŒã¯ãã®èå¥åã䜿çšããŠãèŠæ±ãããªãœãŒã¹ãæåŸã®åŒã³åºã以éã«å€æŽããããã©ããã確èªããŸãïŒãµãŒããŒã¯å¯äžã®ä¿¡é Œã§ãããœãŒã¹ã§ããããšã«æ³šæããŠãã ããïŒã ãªãœãŒã¹ãå®éã«å€æŽãããå ŽåãæåŸã®ã³ããŒãéä¿¡ããŸãã ãã以å€ã®å Žåã304 Not Modifiedãéä¿¡ããŸãã ãã£ãã·ã¥ã®æå¹æ§ã¢ãã«ã§ã¯ãã¯ã©ã€ã¢ã³ããšãµãŒããŒã®äž¡æ¹ã®éšåãå®è£ ããŠãã£ãã·ã¥ãå®è£ ããããã«ãéçºè ãããã«åªåããå¿ èŠããããŸãã äž¡æ¹ã«ã€ããŠããã«èª¬æããŸãã
ã«ã¹ã¿ããŒãµããŒã
å®éiOSã§ã¯ãMKNetworkKitã䜿çšãããšããã¹ãŠã®äœæ¥ãèªåçã«è¡ãããŸãã ããããAndroidããã³Windows Phoneã®éçºè åãã«ããããã©ã®ããã«å®è£ ãããã詳现ã«èª¬æããŸãã
ãã£ãã·ã¥æå¹æ§ã¢ãã«ã¯ãETagããã³Last-Modoified HTTPããããŒã䜿çšããŸãã ã¯ã©ã€ã¢ã³ãåŽã®å®è£ ã¯ããµãŒããŒåŽãããç°¡åã§ãã ãªãœãŒã¹ãå«ãETagãåãåã£ãå Žåããããåãåãããã®2çªç®ã®èŠæ±ãè¡ããšãã«ãããããŒã®ãIF-NONE-MATCHããã£ãŒã«ãã«ETagãéä¿¡ããŸãã åæ§ã«ããªãœãŒã¹ã§ãLast-Modifiedããåä¿¡ããå ŽåãåŸç¶ã®ãªã¯ãšã¹ãã§ãIF-MODOFIED-SINCEãããããŒã«éä¿¡ããŸãã ãµãŒããŒã¯ããETagãããã€äœ¿çšãããLast-Modifiedãã䜿çšãããã決å®ããŸãã

æå¹æéã¢ãã«ã®å®è£ ã¯ç°¡åã§ãã ããããŒãã£ãŒã«ããExpiresããŸãã¯ãCache-ControlïŒmax-age-nãã«åºã¥ããŠæå¹æéãèšç®ãããã®æ¥ä»ã«éãããšãã£ãã·ã¥ãã¯ãªã¢ããŸãã
ãµãŒããŒåŽã®å®è£
ETagã䜿çšãã
ETagã¯éåžžãããã·ã¥ã¢ã«ãŽãªãºã ã䜿çšããŠãµãŒããŒäžã§èšç®ãããŸãã ïŒJava / CïŒ/ Scalaãªã©ã®ã»ãšãã©ã®é«ã¬ãã«ãµãŒããŒèšèªã«ã¯ããªããžã§ã¯ããããã·ã¥ããæ©èœããããŸãïŒã å¿çãçæããåã«ããµãŒããŒã¯ãªããžã§ã¯ãã®ããã·ã¥ãèšç®ãããããETagããããŒãã£ãŒã«ãã«è¿œå ããå¿ èŠããããŸãã ã¯ã©ã€ã¢ã³ããå®éã«ãªã¯ãšã¹ãã§IF-NONE-MATCHãéä¿¡ãããã®ETagãèšç®ããå€ãšçããå Žåã304 Not Modifiedãéä¿¡ããŸãã ãã以å€ã®å Žåã¯ãå¿çãäœæããæ°ããETagã§éä¿¡ããŸãã
æçµå€æŽã®äœ¿çš
Last-Modifiedã®äœ¿çšãå®è£ ããããšã¯ãå®å šã«ç°¡åã§ã¯ãããŸããã APIã«å人ã®ãªã¹ããè¿ãåŒã³åºããããããšãæ³åããŠã¿ãŸãããã
http://api.mynextfacebook.com/friends/
ETagã䜿çšãããšãå人ã®é åã®ããã·ã¥ãèšç®ããŸãã Last-Modifiedã䜿çšããå ŽåããªãœãŒã¹ãæåŸã«å€æŽãããæ¥ä»ãéä¿¡ããå¿ èŠããããŸãã ãã®ãªãœãŒã¹ã¯ãªã¹ãã§ããããããã®æ¥ä»ã¯æåŸã«æ°ããåéãè¿œå ããæ¥ä»ã§ããå¿ èŠããããŸãã ããã«ã¯ãéçºè ãããŒã¿ããŒã¹å ã®åãŠãŒã¶ãŒã®æåŸã®ããŒã¿å€æŽã®æ¥ä»ãæŽçããå¿ èŠããããŸãã ETagããå°ãè€éã§ãããããã©ãŒãã³ã¹ã®é¢ã§å€§ããªå©ç¹ããããŸãã
ã¯ã©ã€ã¢ã³ããåããŠãªãœãŒã¹ãèŠæ±ãããšãã«ãåéã®å®å šãªãªã¹ããéä¿¡ããŸãã ã¯ã©ã€ã¢ã³ãããã®åŸç¶ã®ãªã¯ãšã¹ãã«ã¯ãããããŒã«ãIF-MODIFIED-SINCEããã£ãŒã«ããå«ãŸããããã«ãªããŸãã ãµãŒããŒã³ãŒãã¯ãæå®ããæ¥ä»ä»¥éã«è¿œå ãããåéã®ãªã¹ãã®ã¿ãéä¿¡ããå¿ èŠããããŸãã å€æŽåã®ããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããããã®ã³ãŒãã¯æ¬¡ã®ãããªãã®ã§ããïŒ
SELECT * FROM Friends;
å€æŽåŸã次ã®ããã«ãªããŸããã
SELECT * FROM Friends WHERE friendedDate > IF-MODIFIED-SINCE;
èŠæ±ãã¬ã³ãŒããè¿ããªãå Žåã304 Not Modifiedãéä¿¡ããŸãã ãããã£ãŠããŠãŒã¶ãŒã«300人ã®å人ãããŠããã®ãã¡2人ã ããæè¿è¿œå ãããå Žåãåçã«ã¯2ã€ã®ãšã³ããªã®ã¿ãå«ãŸããŸãã ãªã¯ãšã¹ãã®ãµãŒããŒåŠçæéãšåæã«æ¶è²»ããããªãœãŒã¹ãå€§å¹ ã«åæžãããŸãã
ãã¡ãããããã¯éåžžã«åçŽåãããã³ãŒãã§ãã å人ã®åé€ãŸãã¯ãããã¯ããµããŒãããããšã«ããå Žåãéçºè ã«é çãè¿œå ãããŸãã ãµãŒããŒã¯ãã³ããéä¿¡ã§ããå¿ èŠããããŸãããã®ãã³ãã䜿çšããŠãã¯ã©ã€ã¢ã³ãã¯ã©ã®åéãè¿œå ãããã©ã®åéãåé€ãããããäŒããããšãã§ããŸãã ãã®ææ³ã§ã¯ããµãŒããŒåŽã®éçºã«è¿œå ã®åŽåãå¿ èŠã§ãã
ãã£ãã·ã³ã°ã¢ãã«ã®éžæ
ã ããã é£ãããããã¯ã§ããã 次ã«ãç¹å®ã®ãã£ãã·ã¥ã¢ãã«ã䜿çšããããã®åºæ¬çãªã«ãŒã«ããŸãšããŠå°ãåºããŸãã
- ãã¹ãŠã®éæ¢ç»åã¯ãæå¹æéã¢ãã«ã«ãã£ãŠæäŸãããå¿ èŠããããŸãã
- åçã«çæããããã¹ãŠã®ããŒã¿ã¯ã劥åœæ§ã¢ãã«ã«ãã£ãŠãã£ãã·ã¥ãããå¿ èŠããããŸãã
- åçã«çæããããªãœãŒã¹ããªã¹ãã§ããå ŽåãLast-Modified劥åœæ§ã¢ãã«ã䜿çšããå¿ èŠããããŸãã ïŒäŸïŒ/åéïŒã ãã®ä»ã®å ŽåãETagããŒã¹ã®åŠ¥åœæ§ã¢ãã«ã䜿çšããå¿ èŠããããŸãã ïŒäŸïŒ/friends/firstname.lastnameïŒã
- ãŠãŒã¶ãŒãå€æŽã§ããç»åããã®ä»ã®ãªãœãŒã¹ïŒã¢ãã¿ãŒãªã©ïŒããETagã䜿çšãã劥åœæ§ã¢ãã«ã«ãã£ãŠãã£ãã·ã¥ããå¿ èŠããããŸãã ãããã¯ç»åã§ãããäŒç€Ÿã®ããŽã®ããã«æ°žç¶çã§ã¯ãããŸããã ãŸãããã®ãããªãªãœãŒã¹ã®æå¹æéãæ£ç¢ºã«èšç®ããããšã¯ã§ããŸããã
å¥ã®æ¹æ³ïŒå®è£ ã¯ç°¡åã§ãããå°ããããã³ã°ïŒã¯ããURLãšã©ãŒãã䜿çšããããšã§ãã åçã«ã¢ãã¿ãŒURLãããå Žåããã®äžéšãåçã«ããå¿ èŠããããŸãã ãã®ãããURLã次ã®ããã«è¡šã代ããã«
http://images.mynextfacebook.com/person/firstname.lastname/avatar
ãã
http://images.mynextfacebook.com/person/firstname.lastname/avatar/<>
ãŠãŒã¶ãŒãã¢ãã¿ãŒãå€æŽãããšãããã·ã¥ãå€æŽãããã¯ãã§ãã åéãªã¹ããéä¿¡ããã³ãŒã«ã¯ãã¢ãã¿ãŒãå€æŽãããŠãŒã¶ãŒã«å€æŽãããURLãéä¿¡ããããã«ãªããŸããã ãããã£ãŠããããã¡ã€ã«ç»åã®å€æŽã¯ã»ãŒç¬æã«é ä¿¡ãããŸãïŒ
ãµãŒããŒã¢ããªã±ãŒã·ã§ã³ãšã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ãå®éã«ç¢ºç«ããããã£ãã·ã¥æšæºãæºãããŠããå ŽåãiOSã¢ããªã±ãŒã·ã§ã³ãšè£œåã¯äžè¬ã«ãé£ã¶ãã ãã§ãã
ãã®èšäºã§ã¯ãã»ãšãã©ã®éçºè ãé å®ããŠããªãæšæºã«ã€ããŠç°¡åã«èª¬æããŸããã
ããã§ãèšäºã®ç¬¬2éšã¯çµããã§ãã 以äžããã³æåŸã§ã¯ããšã©ãŒãšãã®é©åãªåŠçã«é¢ããæ å ±ã®äº€æãããã³ã¢ããªã±ãŒã·ã§ã³ã®åœéåã«ã€ããŠèª¬æããŸãã
èªãããšããå§ãããŸã
REST APIèšèšã«ãŒã«ããã¯