REST APIãšã¯äœã§ããïŒä»ã®ã¿ã€ããšã©ã®ããã«ç°ãªããŸããïŒ
RESTAPIãšããããã€äœ¿çšãã¹ããã«ã€ããŠåŠã³ãŸãã

APIãŸãã¯ã¢ããªã±ãŒã·ã§ã³ããã°ã©ãã³ã°ã€ã³ã¿ãŒãã§ã€ã¹ã¯ãç°ãªãã¢ããªã±ãŒã·ã§ã³éã®çžäºäœçšãšéä¿¡ãå¯èœã«ããæ©èœãšã«ãŒã«ãæäŸããŸãããããã®ã€ã³ã¿ãŒãã§ãŒã¹ã¯ã¢ããªã±ãŒã·ã§ã³çµ±åã容æã«ããéçºè ã匷åãªããžã¿ã«è£œåãäœæã§ããããã«ããŸãã
APIã¯ããªã¯ãšã¹ããšã¬ã¹ãã³ã¹ãä»ããŠã¢ããªã±ãŒã·ã§ã³éã仲ä»ããŸããããšãã°ããŠãŒã¶ãŒã®æ¢åã®Twitterã¢ã«ãŠã³ããä»ããã¢ããªã±ãŒã·ã§ã³ãžã®ç»é²ã¯ãéçºè
ãã¢ããªã«çµ±åããTwitterAPIãä»ããŠè¡ãããŸãã
APIã¯ãèŠæ±ãšå¿çãéä¿¡ããããã«ããŸããŸãªãããã³ã«ãšã¢ãŒããã¯ãã£ã䜿çšããŸãã
- XML-RPC âãããã¯ãŒã¯éã§æ©èœã亀æã§ããŸãã XML-RPCã¯ãXMLã䜿çšããŠãã¯ã©ã€ã¢ã³ããããµãŒããŒã«æ å ±ã転éããããã®å¿ç/èŠæ±ãšHTTPãããã³ã«ãèšè¿°ããŸãã
- JSON-RPCã¯ãXMLã«äŒŒã軜éã®RPCã§ããããã§ããããã³ã«ã¯JSONã§ãšã³ã³ãŒããããŠããŸããéåæå¿çã§ãµãŒããŒãžã®åŒã³åºããåä¿¡ã§ããŸãã
- SOAP âã³ã³ãã¥ãŒã¿ãããã¯ãŒã¯ã«WebãµãŒãã¹ãå®è£ ãããšãã«æ§é åãããæ å ±ã亀æããããã®åçŽãªãªããžã§ã¯ãã¢ã¯ã»ã¹ãããã³ã«ã SOAPã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§ã®èªèšŒãæ¿èªãããã³ããã»ã¹éä¿¡ã«XMLã䜿çšããŸããããã«ãããã¯ã©ã€ã¢ã³ãã¯ãã©ãããã©ãŒã ãèšèªã«é¢ä¿ãªããWebãµãŒãã¹ãåŒã³åºããŠå¿çãåãåãããšãã§ããŸãã
- REST APIïŒRepresentative State TransferïŒâã¯ã©ã€ã¢ã³ããµãŒããŒå®è£ ãåå¥ã«äœ¿çšããã¢ãŒããã¯ãã£ã¹ã¿ã€ã«ã RESTã¯éä¿¡ã«HTTPãããã³ã«ã䜿çšããŸãã
ãã®æçš¿ã§ã¯ãREST APIã«çŠç¹ãåœãŠãŠå®çŸ©ããä»ã®APIãšã®éããåæããŸãã
RESTAPIã®å®çŸ©
RESTã¯ãHTTPãããã³ã«ãä»ããŠAPIãèšèšããããã®ã¢ãŒããã¯ãã£ã¹ã¿ã€ã«ã§ãããã®äž»ãªå©ç¹ã¯ããã®åªããæè»æ§ã§ãã
éçºè
ã¯ããµãŒããŒããçŽæ¥Webã¢ããªã±ãŒã·ã§ã³ãŸãã¯ãµã€ãã®ãŠãŒã¶ãŒã«ããŒã¿ãæäŸããå¿
èŠãããå Žåã¯åžžã«RESTAPIã䜿çšããŸãã
REST APIã®äž»ãªã³ã³ããŒãã³ãïŒ
- ã¯ã©ã€ã¢ã³ãâéä¿¡ãéå§ãããŠãŒã¶ãŒåŽïŒããã€ã¹äžïŒã§èµ·åãããã¯ã©ã€ã¢ã³ããŸãã¯ããã°ã©ã ã
- ãµãŒãâ颿°ãšããŒã¿ãžã®ã¢ã¯ã»ã¹ãšããŠAPIã䜿çšãããµãŒããŒã
- ãªãœãŒã¹âãµãŒããŒãã¯ã©ã€ã¢ã³ãã«éä¿¡ããã³ã³ãã³ãïŒãããªãããã¹ããç»åïŒã

RESTAPIã®ä»çµã¿
REST APIã¯ãHTTPãªã¯ãšã¹ããä»ããŠéä¿¡ããããŒã¿ã®äœæãèªã¿åããæŽæ°ãåé€ãªã©ã®æ©èœãå®è¡ããŸãããããã¯ãCRUDæäœãšãåŒã°ããŸãã RESTã¯ãèŠæ±ããããªãœãŒã¹ã«é¢ããæ å ±ãæäŸãã4ã€ã®ã¡ãœããã䜿çšããŠãªãœãŒã¹ã®åŠçæ¹æ³ãèšè¿°ããŸãã
POST âãªãœãŒã¹ã®äœæã
GET âãªãœãŒã¹ãååŸããŸãã
PUT âãªãœãŒã¹ãæŽæ°ããŸãã
DELETE âãªãœãŒã¹ãåé€ããŸãã
ãªãœãŒã¹
ãªãœãŒã¹ã¯ãæ å ±ã®æœè±¡åã§ããRESTAPIã®éèŠãªæŠå¿µã§ããããã¥ã¡ã³ããç»åãäžæçãªãµãŒãã¹ãªã©ãã©ã®ãããªæ å ±ã§ãããŸããŸããã
ããæç¹ã§ã®ãªãœãŒã¹ã®ç¶æ ã¯ãããŒã¿ãããŒã¿ã説æããã¡ã¿ããŒã¿ãããã³é¡§å®¢ã次ã®ç¶æ ã«ç§»è¡ããã®ã«åœ¹ç«ã€ãã€ããŒã¡ãã£ã¢ãªã³ã¯ã§æ§æããããªãœãŒã¹è¡šçŸãšåŒã°ããŸãã
æ å ±ã¯ãJSONãHTMLãXLTãPythonããŸãã¯ãã¬ãŒã³ããã¹ããªã©ã®ããŸããŸãªåœ¢åŒã§ã¯ã©ã€ã¢ã³ãã«é ä¿¡ã§ããŸããæã人æ°ãããã䜿çšãããŠããã®ã¯JSONã§ããããã¯ã人éã§æ©æ¢°å¯èªã§ãããèšèªã«äŸåããªãããã§ãã
ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ããã«ã¯ãã¯ã©ã€ã¢ã³ãã¯ãªã¯ãšã¹ããè¡ãå¿ èŠããããŸãããµãŒããŒã¯ãããåä¿¡ããåŸããªãœãŒã¹ã«é¢ãããšã³ã³ãŒããããããŒã¿ã䜿çšããŠå¿çãçæããŸãã
ãªã¯ãšã¹ãæ§é ã«ã¯ãHTTPã¡ãœããïŒåè¿°ã®CRUDïŒããšã³ããã€ã³ããããããŒãæ¬æã®4ã€ã®äž»èŠã³ã³ããŒãã³ããå«ãŸããŸãã
HTTPã¡ãœãã ã¯ããªãœãŒã¹ã§äœããã¹ãããèšè¿°ããŸããäžèšã§ã¯ãPOSTãGETãPUTãDELETEã®4ã€ã®äœ¿çšå¯èœãªã¡ãœããã«ã€ããŠèª¬æããŸããã
ãšã³ããã€ã³ã ã«ã¯URIïŒUniform Resource IdentifierïŒãå«ãŸããŠããŸããããã¯ããªãœãŒã¹ãèŠã€ããæ¹æ³ãšå Žæã瀺ããŸãã URLãŸãã¯UniformResource Locationã¯ãå®å šãªWebã¢ãã¬ã¹ã衚ãæãäžè¬çãªURIã¿ã€ãã§ãã
ããã㌠ã«ã¯ãã¯ã©ã€ã¢ã³ããšãµãŒããŒã«é¢é£ããããŒã¿ãå«ãŸããŠããŸããããããŒã«ã¯ãèªèšŒããŒã¿ïŒAPIããŒãååããµãŒããŒãã€ã³ã¹ããŒã«ãããŠããã³ã³ãã¥ãŒã¿ãŒã«å±ããIPã¢ãã¬ã¹ãããã³å¿ç圢åŒã«é¢ããæ å ±ïŒãå«ãŸããŸãã
æ¬æ ã¯ã远å ããããŒã¿ãªã©ã®è¿œå æ å ±ããµãŒããŒã«éä¿¡ããããã«äœ¿çšãããŸãã
RESTAPIã®åå
RESTã¯ç¹å®ã®ãã¯ãããžãŒããã©ãããã©ãŒã ã«çµã³ä»ããããŠããŸãããèšèªã«äŸåããŸããããŸããAPIã®æ§ç¯æ¹æ³ãæ£ç¢ºã«æå®ãããŠããŸããããã ãã6ã€ã®ã¢ãŒããã¯ãã£äžã®å¶çŽããããŸãããããã®å¶çŽã«åŸãããšã§ãã€ã³ã¿ãŒãã§ãŒã¹ãæå¹ãªRESTAPIãšåŒã¶ããšãã§ããŸãããããã¯ããµãŒããŒãèŠæ±ãåŠçããŠå¿çããæ¹æ³ã説æããŸãã
ã¯ã©ã€ã¢ã³ããµãŒããŒ
REST APIã¯ãã¯ã©ã€ã¢ã³ããµãŒããŒã¢ãŒããã¯ãã£ã¹ã¿ã€ã«ãå®è£ ããŸããã¯ã©ã€ã¢ã³ãã¯ãªãœãŒã¹ã®èŠæ±ãéä¿¡ããŠãããããŒã¿ã¹ãã¬ãŒãžã«é¢é£ä»ããããŠããŸãããããŒã¿ã¹ãã¬ãŒãžã¯ãµãŒããŒå ã«æ®ããŸãããµãŒããŒã¯ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãšã®éä¿¡ã«ã¯é¢äžããŸãããã¯ã©ã€ã¢ã³ããšãµãŒããŒã¯çžäºã«äŸåããŠé²åããŸãããã®èŠçŽ ã«ãããRESTã¯ããã«æè»ã§ã¹ã±ãŒã©ãã«ã«ãªããŸãã
çµ±äžãããã€ã³ã¿ãŒãã§ãŒã¹
çµ±äžãããã€ã³ã¿ãŒãã§ãŒã¹ã¯ãRESTAPIãåºå¥ããéèŠãªèŠçŽ ã§ããããã¯ãã¢ããªã±ãŒã·ã§ã³ãããã€ã¹ã®ã¿ã€ããæå³ããã®ã§ã¯ãªãããµãŒããŒãšéä¿¡ããããã®åäžã®æ¹æ³ãããããšã瀺ããŠããŸãã
çµ±äžãããã€ã³ã¿ãŒãã§ãŒã¹ã«ã¯4ã€ã®ååããããŸãã
- ãªãœãŒã¹ã®èå¥ãåãªãœãŒã¹ã«ã¯ããªãœãŒã¹ã®ç¶æ ã«äŸåããªãIDãå¿ èŠã§ãã URLã¯èå¥åãšããŠæ©èœããŸãã
- 衚çŸã«ãããªãœãŒã¹ã®æäœã ïŒã¯ã©ã€ã¢ã³ããæã€ïŒãªãœãŒã¹è¡šçŸã«ã¯ããªãœãŒã¹ãåé€ãŸãã¯å€æŽããããã«å¿ èŠãªããŒã¿ãå«ãŸããŠããŸããã¯ã©ã€ã¢ã³ãã¯ããµãŒããŒïŒJSONãªããžã§ã¯ãïŒã倿Žãåé€ããŸãã¯è¿œå ããå¿ èŠããããšãã衚çŸãéä¿¡ããŸãã
- èªå·±èšè¿°çãªã¡ãã»ãŒãžããã®ãããªã¡ãã»ãŒãžã«ã¯ãåä¿¡è ãçè§£ã§ããããã«ãã¹ãŠã®æ å ±ãå«ãŸããŠããŸããå¥ã®ããã¥ã¡ã³ããã¡ãã»ãŒãžã«è¿œå æ å ±ã¯å¿ èŠãããŸãããåã¡ãã»ãŒãžã«ã¯ããµãŒããŒãèŠæ±ãè§£æããã®ã«ååãªæ å ±ãå«ãŸããŠããŸãã
- ã¢ããªã±ãŒã·ã§ã³ç¶æ ã®ãšã³ãžã³ãšããŠã®ãã€ããŒã¡ãã£ã¢ããã€ããŒã¡ãã£ã¢ã§ã¯ãã¯ã©ã€ã¢ã³ããä»ã®ãªãœãŒã¹ãèŠã€ããããšãã§ããããã«ãå¿çããšã«ãªã³ã¯ã䜿çšããå¿ èŠããããŸãã RESTã§ã¯ããã€ããŒã¡ãã£ã¢ããã¹ãŠã®å¯Ÿè©±ã«äœ¿çšãããŸãã
ã¹ããŒãã¬ã¹
ããã¯ããµãŒããŒã«ã¯ã©ã€ã¢ã³ãã«é¢ããããŒã¿ãå«ãŸããŠããªãããšãæå³ããŸãããªã¯ãšã¹ãã®åŠçã«å¿ èŠãªãã¹ãŠã®æ å ±ããªã¯ãšã¹ãã«å«ãŸããŠããŸããã¯ã©ã€ã¢ã³ãã¯ãã¹ãŠã®ã»ãã·ã§ã³æ å ±ãä¿åããŸãã
ãã£ãã·ã¥å¯èœ
åå¿çã«ã¯ããã£ãã·ã¥å¯èœãã©ãããããã³å¿çããã£ãã·ã¥ã§ããæéãç€ºãæ å ±ãå¿ èŠã§ãããã£ãã·ã¥å¯èœã§ããå Žåãåæ§ã®ãªã¯ãšã¹ãã§ãã¯ã©ã€ã¢ã³ãã¯ãµãŒããŒã«ãªã¯ãšã¹ããç¹°ãè¿ãéä¿¡ããããšãªãåãããŒã¿ã䜿çšã§ããŸããããã©ãŒãã³ã¹ãšå¯çšæ§ã®åäžã«åœ¹ç«ã¡ãŸãã
éå±€åã·ã¹ãã
RESTã¯ã¬ã€ã€ãŒéå±€ãå®è£ ããŸããããã«ãããã³ã³ããŒãã³ãã®åäœã«ç¹å®ã®å¶éãçããŸããéå±€åãããã·ã¹ãã ã§ã¯ãã³ã³ããŒãã³ãã¯æãè¿ãã¬ãã«ã«ããã³ã³ããŒãã³ããšããããçžäºäœçšããã³ã³ããŒãã³ãã®ã¿ãèŠãããšãã§ããŸãã
ãªã³ããã³ãã®ã³ãŒã
ããã¯ãã¯ã©ã€ã¢ã³ããã³ãŒããããŠã³ããŒãããŠå®è¡ã§ããããã«ãããªãã·ã§ã³æ©èœã§ãã
REST APIã®éãã¯äœã§ããïŒ
REST APIã®6ã€ã®ååã¯ããã®ã€ã³ã¿ãŒãã§ãŒã¹ãšä»ã®ã¿ã€ãã®äž»ãªéããšèŠãªãããšãã§ããŸããããã«ãããã€ãã®ãã©ã¡ãŒã¿ãŒãRESTãåºå¥ããŸãã
ãŸããRESTã®æ¬è³ªããä»ã®ã¿ã€ããšã®éäºææ§ã決å®ããŸããããã¯ãRESTfulWebãµãŒãã¹ãæäŸããããã«åŸãå¿ èŠã®ããäžé£ã®èŠä»¶ãã¢ãŒããã¯ãã£ã衚ãã¢ãŒããã¯ãã£ã¹ã¿ã€ã«ã§ããããšãã°ãSOAPãšRPCã¯ãã¡ãã»ãŒãžãèšè¿°ããã¡ãã»ãŒãžã³ã°ãããã³ã«ã§ããã¡ãã»ãŒãžãæºãããªããã°ãªããªãèŠä»¶ïŒå¶çŽïŒã®ã¿ãæå®ããã¢ãŒããã¯ãã£ã¹ã¿ã€ã«ãšã¯ç°ãªããŸãã
æ§é
éåžžãAPIã¯ã¢ããªé圢åŒã«åŸããŸãããRESTã¯å¥ã®æ§é ïŒã¯ã©ã€ã¢ã³ããµãŒããŒïŒã«åŸããŸããã¯ã©ã€ã¢ã³ããšãµãŒããŒã¯ç¬ç«ããŠé²åããŠãããäœæ¥ã®æè»æ§ãåäžããŠããŸãã
ã¡ãã»ãŒãžäº€æãã©ãŒããã
APIã¯éåžžãç¹å®ã®ã¡ãã»ãŒãžåœ¢åŒã䜿çšããŸããããšãã°ãSOAPã¯XMLã䜿çšããŸãã RESTã¯ãã®ãããªå³å¯ãªååã«ã¯åŸããŸãããã»ãŒãã¹ãŠã®åœ¢åŒã䜿çšããŠããŒã¿ã亀æã§ããŸãããã ããçŸåšãJSONãæã人æ°ããããŸãã
JSONã®äººæ°ã®èåŸã«ã¯æãããªçç±ããããŸããããã¯ã人éãèªãã圢åŒã§ãããããŒã¿äº€æåœ¢åŒãåæããã®ãç°¡åã§ãã JSONã¯èšèªã«äŸåãããJavaScript以å€ã®ä»»æã®èšèªã§äœ¿çšã§ããŸãã
æè»æ§
RESTã¯æè»ãªã¢ãŒããã¯ãã£ã¹ã¿ã€ã«ã§ãããããéçºè ã¯åºã䜿çšããŠããŸããããå€ãã®åž¯åå¹ ãå¿ èŠãšããé«åºŠãªã»ãã¥ãªãã£æ©èœãåããããè€éãªãããã³ã«ã§ããSOAPãšæ¯èŒãããšãRESTã¯ãéçºè ããããã®èŠä»¶ããã©ãŒãããã§äœ¿çšã§ããããã«ããåçŽãªã¬ã€ãã©ã€ã³ã§æ§æãããŠããŸãããã®ã¢ãŒããã¯ãã£ã¯é«æ§èœãæäŸããããŠã³ããŒãé床ãéèŠãªã¢ãã€ã«ããã€ã¹ã§ç¹ã«éèŠããããŸãã
ã芧ã®ãšãããRESTã«ã¯ä»ã®æ¢ç¥ã®APIã«æ¯ã¹ãŠç¹å®ã®å©ç¹ããããŸãããã®ãããTwitterãGoogleãªã©ã®ãã¹ãŠã®å€§æäŒæ¥ãèªç€Ÿè£œåã«å®è£ ããŠããŸããçµå±ã®ãšãããããã¯äžçäžã®éçºè ã«ããŒã¿ã転éããããã®çæ³çã§ç°¡åãªæ¹æ³ã§ããããœãããŠã§ã¢éçºã®ããã®å¹ççã§ã¹ã±ãŒã©ãã«ãªã€ã³ã¿ãŒãã§ã€ã¹ãäœæããããã®å®èšŒæžã¿ã®ã¡ã«ããºã ã§ãã


