ãã®èšäºã¯ç§ã®é ã®äžã§é·ãééžé ãããŠããŸãããããŸã£ããç°ãªã圢åŒã§ãã
WEBãµãŒãã¹ïŒ
http://habrahabr.ru/blogs/development/108973/ãªã© ïŒã®ãããã¯ã«é¢ããæåŸã®ããã€ãã®åä»ãªèšäºãèªã¿ããããã§RESTãã¯ãããžãŒã䜿çšããã®ã§ãæ ãæšãŠãæéãå²ãåœãŠãã ãç§ã®é ã®èšäºã§åãã©ãŒãããã
ããã§ãç°¡æœã«ãããªããèšäºã§èŠã€ãããã®ãšããã誰ã«åœ¹ç«ã€ãïŒ
-ãããžã§ã¯ãã®WEBãµãŒãã¹ãäœæããããšã«èå³ãããããŸãã¯èšç»ããŠãã
åå¿è
åã
-
ãããèªåã§
äœãæ°ãããã®ãèŠã€ããå¯èœæ§ã¯äœã
-äžè¬çãªRESTã€ããªãã®ãŒ
-WEBãµãŒãã¹ã§ã®CRUDã®é©çš
-ã«ãŒã¿ãŒãæ§ç¯ããããã®KISSã®åå
-ãã¹ããã©ã¯ãã£ã¹
-å°ãPR;ïŒ
-åèæç®ãæç®
å€æãå§ããå ŽæãšããŠããŸãèšäºãèªãã§ãããããå°ãã°ãŒã°ã«ã§ãè¶ãã³ãŒããŒãäžç·ãçšæããæ£ã«æããå
¥ããŠãã¡ãã£ãšããã£ããäœãå§ããããšããå§ãããŸãã
äžè¬çãªã¢ã€ãã¢
REST *ïŒ1ïŒãšã¯äœã§ããïŒ
RESTã¯ãRepresentational State Transferããã€ãŸããã¯ã©ã€ã¢ã³ãã«ãšã£ãŠäŸ¿å©ãªåœ¢åŒã§ã®ããŒã¿ã®æ瀺ã§ããã¯ã©ã€ã¢ã³ããšã¯ãã¯ã©ã€ã¢ã³ã<->ãµãŒããŒã¢ãã«ã®ã¯ã©ã€ã¢ã³ããœãããŠã§ã¢ãæå³ããŸãã
ãŸããHTTPãããã³ã«ãšRESTã®ååã䜿çšããŠäœæãããWebãµãŒãã¹ã¯ãRESTful WebãµãŒãã¹ãšåŒã°ããŸãã
æªçµéšè
ã«ã¯ãããã«è³ªåããããããããŸããããªããã®ãããªãµãŒãã¹ãå¿
èŠãªã®ã§ããããïŒ RESTããã³OAuthãã¯ãããžãŒã«åºã¥ãç°¡åãªäŸãæããŸããããGmailã¢ã«ãŠã³ããšDropboxã¢ã«ãŠã³ããæã£ãŠããŸãã Dropboxã¯æåŸ
ãããå人ããšã«äœåãªã¹ããŒã¹ãæäŸããŸãããæçŽãæåã§æžããŠGmailã¢ãã¬ã¹åž³ã®ãã¹ãŠã®ã¢ãã¬ã¹ããœãŒãããã®ã¯éå±ãªã ãã§ãªããé·ãããšã§ãã Dropboxã«ã¯ããæ¥ãŠã仲éãé£çµ¡å
ãèªåã§ã€ã³ããŒãããŠãæåŸ
ç¶ãéä¿¡ããããšããæ©èœããããŸãã ã¡ãŒã«ããã¯ã¹ããããããããã¯ã¹ã«ãã¹ã¯ãŒããæž¡ããããªããšãã人ã¯ããªãããšã¯æããã§ãã ããã¯ãRESTful WebãµãŒãã¹ã®ãéæ³ããäœçšããå Žæã§ãã APIã䜿çšããŠïŒå€ãã®äººãèšã£ãŠããããã«ããapiãã§ã¯ãªãïŒãdropboxã¯Google WebãµãŒãã¹ã«ãªã¯ãšã¹ããéä¿¡ããGoogleèªèšŒããŒãžã«ãéä¿¡ããããããGoogleãã©ãŒã ã«ãã¹ã¯ãŒããå
¥åããŸããGoogleã¯ãŠãŒã¶ãŒãèªèšŒããèªèšŒããã»ã¹ïŒèªèšŒïŒã®æåã«ã€ããŠDropboxã«éç¥ïŒaccess_tokenãæäŸïŒããŸãã æçµçã«ãäžæã®ããŒã¯ã³ïŒaccess_tokenïŒãæã¡ããããAPIã®åãªã¯ãšã¹ãã«æ·»ä»ããããšã§ãDropboxã¯ãã¹ã¯ãŒãã«ã€ããŠäœãç¥ããªããŠãå人ããŒã¿ãæäœã§ããŸãã
ã¢ãŒããã¯ãã£ã¯ããšããšæ£ç¢ºã«HTTPã䜿çšããŠéçºãããŸããããRESTã¯å¿
ãããHTTPãããã³ã«ã®äœ¿çšã§ã¯ãªãããšãèŠããŠããããšãéèŠã§ãã RESTã¯ãããŒã¿ã®è»¢éã«ä»»æã®ã¢ããªã±ãŒã·ã§ã³å±€ãããã³ã«ã䜿çšã§ããŸãã
CRUD
RESTful WebãµãŒãã¹ãéçºããå ŽåãCRUD *æ¹æ³è«ïŒ2ïŒãèŠããŠããããšãéèŠã§ããããã¯ã解èªããã翻蚳ã§ã¯ãcreate-read-modify-deleteïŒcreate-read-update-deleteïŒãæå³ããŸãã
WebãµãŒãã¹ã®éçºã¯HTTPãããã³ã«ã䜿çšããŠå®è¡ãããããããã®ãã³ã䜿çšããå¿
èŠããããŸããã€ãŸãããããã³ã«ã¡ãœããã䜿çšããŠããªãœãŒã¹ã«å¯Ÿããã¢ã¯ã·ã§ã³ã決å®ããŸãã RESTã®äžçã§ã¯ãäžè¬çã«æ¬¡ã®æšæºãåãå
¥ããããŠããŸãã
POST-äœæ
GET-èªã¿åãïŒèªã¿åããåä¿¡ïŒ
PUT-æŽæ°ïŒå€æŽãæŽæ°ããŸãã¯äœæãååšããªãå Žåã¯ããã®ããŒãžã§ã³ã§ã䜿çšãããããšããããŸãïŒ
DELETE-åé€ïŒåé€ïŒ
PUTãšDELETEã¯ã¡ãœããã®å®è£
ãå°é£ã§ããããã©ãŠã¶ã®æ©èœã«ããããããã®ã¡ãœããã¯ã¯ã©ã€ã¢ã³ããã©ãŠã¶ãŒåŽã§AJAXã䜿çšããŠã人éçã«ãå®è£
ã§ããããšã«æ³šæããå¿
èŠããããŸããããã«ããã¹ãŠã®ãã©ãŠã¶ãŒã§åäœããããšã¯äžå¯èœãšæãããŸãã ãããã£ãŠãPOSTã¡ãœããã®ããªãŒããŒããŒãããéããŠãããã®ã¡ãœããã䜿çšããã®ãæ
£äŸã§ãã èšãæããã°ãPOSTã¡ãœããã䜿çšããŠããªãŒããŒããŒãããã¡ãœããã®ååãå«ããããçš®ã®äºçŽæžã¿å€æ°ïŒhttp_methodãªã©ïŒãéä¿¡ããŠããŸãã POST + http_method = put-ãµãŒããŒåŽã«ãã¯ã©ã€ã¢ã³ãããªãœãŒã¹ãä»ããŠPUTãèŠæ±ããããšãæ確ã«ããŸãã
ã«ãŒã¿ãŒãæ§ç¯ãããšãã®ãã¹ã®åå
ãããããKISSã解èªããŸã-ãŸã ç解ããŠããªã人ã®ããã«ãå°ãããŠã·ã³ãã«ã«ä¿ã€-ã·ã³ãã«ã§å°ããªãã®ã«åºå·ããèšãæããã°ã誰ããã¢ã¯ã»ã¹å¯èœã§ç解ãããããèŠããããããã«ããŸãã
WebãµãŒããŒããããŒã¿ãåä¿¡ããã«ã¯ãã¯ã©ã€ã¢ã³ãã¯é£çµ¡ããå¿
èŠãããURLãç¥ãå¿
èŠããããŸãã ãããã®åããŠãããŒãµã«ãªãœãŒã¹ãã€ã³ã¿ãŒããæ§ç¯ãããååã«ã€ããŠèª¬æããŸãã
ãŸãããµãŒãã¹ã«åã£ãåºæ¬çãªã«ãŒã«ã»ããã決å®ããŸãã ããšãã°ãåœç€Ÿã®oDesk瀟ã§ã¯ãããŒã¹ã/ apiã§ããURIã¯RESTful APIãªãœãŒã¹ã§ããããšã瀺ããŸããã å¿
èŠã«å¿ããŠãå¥ã®ãµããã¡ã€ã³ã«é
眮ã§ããŸããããã§ã¯ã1ã€ã®ãã¡ã€ã³ã®ãå
éšãã®ã¯ãšãªã§ãã£ãŠããã¯ãã¹ãã©ãŠã¶ã¯ãšãªããã®ä»ã®èœãšãç©ŽãèŠããŠãã䟡å€ããããŸãã
次ã®ãã€ã³ãã¯ããªãœãŒã¹ã«ãŒã¿ãŒïŒããŒã¿ã«ã¢ã¯ã»ã¹ã§ããã¢ãã¬ã¹ïŒãäœæããããšã§ãã äœæãç·šéããéã«é©åãªæ¹æ³ãšèŠãªãããããã€ãã®ç¹ã«æ³šæããŠãã ããã
-æ
£çšçãªã°ã«ãŒããžã®åé¡ïŒmc-ã¡ãã»ãŒãžã»ã³ã¿ãŒãªãœãŒã¹ãããŒã -ã³ãã³ããªãœãŒã¹ãªã©
äŸïŒ/ api / mc / ...
-ããŒãžã§ã³ç®¡ç
äŸïŒ/ api / mc / v1 / ...
-ã¢ã¯ã»ã¹ãèš±å¯ããããªãœãŒã¹ã®æ確ãªåå
äŸïŒ/ api / mc / v1 / prefs / ...-ã¡ãã»ãŒãžã»ã³ã¿ãŒã®èšå®ãžã®ã¢ã¯ã»ã¹
-URLã®äžã«æ°žç¶ããŒã¿ãå
¥åãã
äŸïŒ/ api / mc / v1 / prefs / mydevelopersuid
-å¿ç圢åŒã®å®çŸ©ïŒã«ãŒã¿ãŒURLã®ååããŸãã¯ãã·ã¹ãã ãå€æ°ã®ãããã
äŸïŒ/api/mc/v1/prefs/mydevelopersuid.json-oDeskã¯ãJSON圢åŒã®å¿çãXML圢åŒã®.xmlãªã©ãå¿
èŠãªå Žåã«æ¥å°ŸèŸã.jsonãã䜿çšããŸãã / mc / v1 / prefs / mydevelopersuidïŒtqx = outïŒjson-ããã¯GoogleãGDSã§è¡ãããšã§ãã / api / json / mc / v1 / prefs / mydevelopersuidã¯å¥ã®å¯èœãªãªãã·ã§ã³ã§ããã圢åŒã¯ã«ãŒã¿ãŒã®äžéšã§ãã
ãã¹ããã©ã¯ãã£ã¹
ããã§å€ãã®ããšã話ãããšãã§ããé·ãéãç§ã¯äž»ãªãã€ã³ãããªã¹ãããŸãïŒ
-åžžã«json圢åŒã§å¿çãåä¿¡ããæ©èœãæäŸããŸãã ãã®ãããAJAXã¢ããªã±ãŒã·ã§ã³ã®äžçã§ã¯ãJSON *ïŒ3ïŒãã¯ã©ã€ã¢ã³ãéšåãšãµãŒããŒéšåã®éã§ããŒã¿ã転éããããã®äºå®äžã®ãæšæºãã«ãªã£ãŠããŸãã
-æ¿èªã®ããã«æ€èšŒæžã¿ã®å®çžŸã®ããã¹ããŒã ã䜿çšãã
md5ããŒã¿çœ²åãªã©ã䜿çšããŠã¹ã¯ãŒã¿ãŒãåçºæããªãã§ãã ãããããŒã¿ä¿è·ã®å°é家ãä¿¡é ŒããŠãã ããã OAuthã¯ããŸããŸãªèšèªã®ã©ã€ãã©ãªã§ãã£ã±ãã§ãããããããªãã®ããã«çºæãããŸãã-ãã®åã䜿çšããŠãã ããã OAuthãå¿
èŠãªãå Žåã¯ãFlickrã§å®è£
ãããŠããAPIKeysãè©ŠããŠãã ããã ããã€ãã®ãªãã·ã§ã³ããããŸã-OpenIDãšãã®ä»ãç§ã¯çãèæ
®ããŸãã-ç§ã¯æ¬è³ªãç¥ãããŸããã
-httpsãå¿
èŠãªå Žæãå¿ããªãã§ãã ãã
蚌ææžãIPã®ããã¥ã¡ã³ãã«èªå·±èšè¿°ãããŠããå Žåã¯ããããå¿
ãèšèŒããããšãå¿ããªãã§ãã ããã è¿é£ã®ã¯ãŒã¯ã·ã§ããã®ååã®æéãé«ãè©äŸ¡ãã蚌ææžã®æå¹æ§ã®ãã§ãã¯ããããããšãã£ãŠãã¢ããªã±ãŒã·ã§ã³ã®ãã°ãæ¢ããªãããã«ããŸãã
-çãã«äžæçãªãã®ã決ããŠãæãåºããªããïŒWebãµãŒããŒã®ãšã©ãŒãèŽåœçãããŒã¿ããŒã¹ãšã®æ¥ç¶ã®åé¡ãªã©ã ãããã¯ãã¹ãŠãRESTful WebãµãŒããŒã«ãã£ãŠåŠçãããèŠæ±ããã圢åŒã§æ確ãªåçãæäŸããå¿
èŠããããŸãã ã€ãŸããã¯ã©ã€ã¢ã³ããžã®å¿çæã«æ確ãªãšã©ãŒãæäŸããŸãã å¿ç圢åŒãšããããŒã¯å¥ã®ãããã¯ã§ãã RFC 2616 *ïŒ4ïŒã«åŸã£ãŠæ£ããHTTPã¹ããŒã¿ã¹ãè¿ãããšããå§ãããŸããã¹ããŒã¿ã¹ã«ããã¡ãã»ãŒãžæ¬æãéä¿¡ã§ããå Žåã¯ãæ¬æã«çãã¡ãã»ãŒãžããããŸãã äžéšã®äººã
ã¯ãåžžã«æ¬æã«ã¹ããŒã¿ã¹ã200 OKããäžããããšã奜ããããã¯ã©ã€ã¢ã³ãã¯åžžã«ã¡ãã»ãŒãžã解æããæ¬æã«ãšã©ãŒã¡ãã»ãŒãž/ã¿ã°ãååšãããã©ããã確èªããå¿
èŠããããŸãã æ確ãªæ
£è¡ãäžè¬çãªæèŠã¯ãŸã ãããŸããïŒ
-APIã«ããã¥ã¡ã³ããæžããããã§ãªããã°ãã¡ãã£ãšãããã£ããããã¯åœ¹ã«ç«ããªã:)
-ãããŠæåŸã«ãæåã«RESTful WebãµãŒãã¹ã®å
éšã¢ãŒããã¯ãã£ãèãçŽããŸããããžãã¯ã¯èŠæ±ããã圢åŒãšåãã§ããå¿
èŠããããããŒã¿å€æã¯å圢åŒããšã«åå¥ã«å®è¡ããå¿
èŠããããŸãã ããã«ãããã«ãŒã¿ãŒãç°¡åãã€è¿
éã«æ¡åŒµããå¿
èŠã«å¿ããŠãããŒã¿ã衚瀺ããããã®æ°ããæšæºãè¿œå ã§ããŸãã
PR
oDeskã®RESTful APIã®ã¡ã€ã³éçºè
ã§ããïŒAPI-developers.odesk.comã¯PRã§ãå¥åº·ã®ããã«äœ¿çšããŠãã ããïŒ:)ïŒãRESTãµãŒãã¹ãé·ãéè¡ã£ãŠããã®ã§ããã®åéã®åºæ¬çãªç¥èãå
±æããããšãé©åã ã£ããšæããŸãã ç§ãä¿¡ãããä¿¡ããªããã¯ããªãã®å人çãªæš©å©ã§ãããããã§ãç§ã¯ãå°ãªããšãå°ãèªãã§ãèªåèªèº«ã®ããã«å©çãèŠã€ããŠãå°ãªããšãããªãã®ç¥èããªãã¬ãã·ã¥ããŠãããããšãé¡ã£ãŠããŸã;ïŒ
RESTã¢ãŒããã¯ãã£ã«ã¯ãŸã å€ãã®çåãæ®ãããŠãããå€ãã®å ŽåããªããŒã«ã€ãªãããŸããç§ã®æèŠãããªãã®æèŠãšäžèŽããªãå Žåã§ãç§ã責ããªãã§ãã ããã
PSãã®èšäºã¯
åºæ¬çãªåŽé¢
ã®ã¿ãæ±ã£
ãŠããã WebãµãŒãã¹ãäœæããããã®è©³çŽ°ãªæ瀺ãæ¬ãªã©ãæäŸããããšãæå³ããŠããŸããã
ãªã³ã¯*
ïŒ1ïŒ
http://en.wikipedia.org/wiki/Representational_State_Transfer
ïŒ2ïŒ
http://en.wikipedia.org/wiki/Create,_read,_update_and_delete
ïŒ3ïŒ
http://en.wikipedia.org/wiki/JSON
ïŒ4ïŒ
http://www.w3.org/Protocols/rfc2616/rfc2616.html
åç
§ïŒRESTful Web ServicesïŒLeonard RichardsonãSam RubyïŒãO'Reilly MediaãInc.
Yahoo RESTã°ã«ãŒãïŒ
http :
//tech.groups.yahoo.com/group/rest-discuss/