ã䜿çšããWebéçºã®åŸ æã®ç¬¬2çããã ãŸãã
ãã®ãããã¯ã«é¢ãã調æ»ã®äžç°ãšããŠãããŒã¿ããŒã¹ã®ããŒãšå€ã®ä»£ããã«ãªãœãŒã¹ãžã®ãªã³ã¯ã䜿çšãããã¢ãã«ããWebAPIãèšèšããããšã«é¢ããæŠå¿µçãªèšäºãèŠã€ããŸããããªãªãžãã«-GoogleCloudããã°ãããç«ã®äžã§æè¿ããŸãã
æ å ±ãã¢ãã«åããå ŽåãéèŠãªåé¡ã¯ã2ã€ã®ãšã³ãã£ãã£éã®é¢ä¿ãšé¢ä¿ãã©ã®ããã«å®çŸ©ãããã§ããå®äžçã§èŠ³å¯ããããã¿ãŒã³ãå®äœãšãã®é¢ä¿ã®èŠ³ç¹ãã説æãã ããšã¯ãå°ãªããšãå€ä»£ã®ãªã·ã£ã«ãŸã§ããã®ãŒãåºæ¬çãªèãæ¹ã§ãããŸããçŸä»£ã®ITæ¥çã§ãåºæ¬çãªåœ¹å²ãæãããŠããŸãã
ããšãã°ããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ãã¯ãããžã§ã¯ãé¢ä¿ã¯å€éšããŒã䜿çšããŠèšè¿° ãããŸããå€éšããŒã¯ãããŒãã«ã®1ã€ã®è¡ã«æ ŒçŽãããå¥ã®ããŒãã«ãŸãã¯åãããŒãã«ã®å¥ã®è¡ãæãå€ã§ãã
APIã§é¢ä¿ãè¡šçŸããããšãåæ§ã«éèŠã§ããããšãã°ãå°å£²APIã§ã¯ãæ å ±ãšã³ãã£ãã£ã¯é¡§å®¢ã泚æãã«ã¿ãã°ãšã³ããªãã·ã§ããã³ã°ã«ãŒããªã©ã«å¯Ÿå¿ã§ããŸããéè¡å£åº§APIã¯ãç¹å®ã®å£åº§ãã©ã®é¡§å®¢ã«å±ããŠããããããã³ååµåãŸãã¯ã¯ã¬ãžãããã©ã®å£åº§ã«é¢é£ä»ããããŠããããèšè¿°ããŸãã
APIéçºè ãé¢ä¿ãè¡šçŸããããã«äœ¿çšããæãäžè¬çãªæ¹æ³ã¯ãããŒã¿ããŒã¹ããŒãŸãã¯ãããã®ããŒã«é¢é£ä»ãããããšã³ãã£ãã£ã®ãã£ãŒã«ãã«ãããã®ãããã·ãæäŸããããšã§ãããã ããå°ãªããšã1ã€ã®ã¯ã©ã¹ã®APIïŒWebæåïŒã§ã¯ããã®ã¢ãããŒãã«ä»£ãã奜ãŸããæ¹æ³ããããŸããããã¯ãWebãªã³ã¯ã䜿çšããããšã§ãã
ã€ã³ã¿ãŒãããæè¡ç¹å¥èª¿æ»å§å¡äŒïŒIETFïŒã«ãããš ïŒãWebãªã³ã¯ã¯ãWebäžã®ããŒãžéã®é¢ä¿ãèšè¿°ããããã®ããŒã«ãšèããããšãã§ããŸããæãæåãªWebãªã³ã¯ã¯ãHTMLããŒãžã«è¡šç€ºããããªã³ã¯èŠçŽ ãŸãã¯ã¢ã³ã«ãŒèŠçŽ ããããã¯HTTPããããŒã§å²ãŸããŠãããã®ã§ãããã ãããªã³ã¯ã¯APIãªãœãŒã¹ã«ã衚瀺ãããå¯èœæ§ããããå€éšããŒã®ä»£ããã«ãªã³ã¯ã䜿çšãããšãAPIãããã€ããŒãè¿œå ã§ææžåããå¿ èŠãããããŠãŒã¶ãŒã調æ»ããå¿ èŠã®ããæ å ±ã®éãå€§å¹ ã«åæžãããŸãã
ãªã³ã¯ã¯ãå¥ã®WebãªãœãŒã¹ãžã®åç §ãšã2ã€ã®ãªãœãŒã¹éã®é¢ä¿ã®ååãå«ã1ã€ã®WebãªãœãŒã¹å ã®èŠçŽ ã§ããå¥ã®ãšã³ãã£ãã£ãžã®åç §ã¯ããäžæã®ãªãœãŒã¹èå¥åãïŒURIïŒãšåŒã°ããç¹å¥ãªåœ¢åŒã§èšè¿°ãããŸãããã®åœ¢åŒã«ã¯IETFæšæºã ãããŸãã..ããã®æšæºã§ã¯ãããªãœãŒã¹ããšããåèªã¯ãURIãæããšã³ãã£ãã£ãæããŸãããªã³ã¯å ã®é¢ä¿ã¿ã€ãã®ååã¯ãå€éšããŒãå«ãããŒã¿ããŒã¹åã®ååãšåãã§ãããšèŠãªãããšãã§ãããªã³ã¯å ã®URIã¯å€éšããŒã®å€ãšåãã§ãããã¹ãŠã®URIã®äžã§æãæçšãªã®ã¯ãæšæºã®Webãããã³ã«ã䜿çšããŠåç §ããããªãœãŒã¹ã«é¢ããæ å ±ãæäŸããURIã§ãããããã®URIã¯ãUniformResourceLocatorãïŒURLïŒãšåŒã°ããAPIã®æãéèŠãªURLã¯HTTPURLã§ãã
ãªã³ã¯ã¯APIã§åºã䜿çšãããŠããŸããããããã€ãã®éåžžã«æåãªWeb APIã¯ãé¢ä¿ãè¡šãæ段ãšããŠHTTPURLã«åºââã¥ããŠããŸãããããã¯ãããšãã°ã Google DriveAPIã§ããããã³ GitHubAPIããªããããªã®ã§ããïŒãã®èšäºã§ã¯ãå€éšããŒAPIãå®éã«äœ¿çšããæ¹æ³ããªã³ã¯ã䜿çšããå Žåãšæ¯èŒããå Žåã®æ¬ ç¹ã«ã€ããŠèª¬æããå€éšããŒã䜿çšããèšèšããªã³ã¯ã䜿çšããèšèšã«å€æããæ¹æ³ã瀺ããŸãã
å€éšããŒãšã®é¢ä¿ãè¡šã
人æ°ã®ããæè²çšãããã·ã§ããã¢ããªã±ãŒã·ã§ã³ãèããŠã¿ãŸãããããã®ã¢ããªã±ãŒã·ã§ã³ã¯ãããããšãã®é£Œãäž»ã«é¢ããæ å ±ã远跡ããããã®ã¬ã³ãŒããä¿åããŸãããããã«ã¯ãååãçš®ãåçš®ãªã©ã®å±æ§ããããŸããææè ã¯ååãšäœæãæã£ãŠããŸããåãããã¯ãã®é£Œãäž»ã«é¢é£ããŠãããéã®é¢ä¿ã«ãããç¹å®ã®é£Œãäž»ã®ãã¹ãŠã®ããããèŠã€ããããšãã§ããŸãã
å žåçãªããŒããŒã¹ã®èšèšã§ã¯ããããã·ã§ããAPIã¯æ¬¡ã®ãããª2ã€ã®ãªãœãŒã¹ãæäŸããŸãã
åç¬ã©ãã·ãŒãšãžã§ãŒã®é¢ä¿ã¯æ¬¡ã®ããã«è¡šçŸãããŸããåç¬ã©ãã·ãŒã®èŠè§£ã§ã¯ããžã§ãŒã¯ãææè ãã«å¯Ÿå¿ããååãšæå³ãæã€ãã®ãšããŠæå®ãããŠããŸããéã®é¢ä¿ã¯è¡šçŸãããŠããŸãããææè ã®å€ã¯ãå€éšããŒã§ããã98765ãã§ããããã¯ããããããŒã¿ããŒã¹ã®å®éã®å€éšããŒã§ããã€ãŸããããŒã¿ããŒã¹ããŒãã«ã®ããè¡ã®äž»ããŒã®å€ãåŠçããŠããŸãããã ããAPIå®è£ ãããŒå€ããããã«å€æŽããå Žåã§ãããã®äž»ãªç¹æ§ã¯å€éšããŒã«è¿ã¥ããŸãã
å€ã98765ãã¯ã顧客ãçŽæ¥äœ¿çšããã®ã«ã¯ããŸãé©ããŠããŸãããæãäžè¬çãªã±ãŒã¹ã§ã¯ãã¯ã©ã€ã¢ã³ãã¯ãã®å€ã䜿çšããŠURLãäœæããå¿ èŠããããAPIããã¥ã¡ã³ãã¯ãã®å€æãè¡ãããã®åŒã説æããå¿ èŠããããŸããéåžžãããã¯æ¬¡ã®ããã«URIãã¿ãŒã³ãå®çŸ©ããããšã«ãã£ãŠè¡ãã ãŸã
/people/{person_id}
ãéã®é¢ä¿ïŒãããã¯ææè ãææããŸãïŒã¯ã次ã®URIãã¿ãŒã³ã®ãããããå®è£ ããŠææžåããããšã§APIã«å ¬éããããšãã§ããŸãïŒéãã¯æäœã®ã¿ã§ãããå®è³ªçïŒïŒ
/pets?owner={person_id}
/people/{person_id}/pets
ãã®ããã«èšèšãããAPIã§ã¯ãéåžžãå€ãã®URIãã¿ãŒã³ãå®çŸ©ããŠææžåããå¿ èŠããããŸãããã®ãããªãã¿ãŒã³ãå®çŸ©ããããã®æãäžè¬çãªèšèªã¯ãIETFä»æ§ã§æå®ãããŠããèšèªã§ã¯ãªãã OpenAPIïŒä»¥åã¯SwaggerãšåŒã°ããŠããŸããïŒã§ããããŒãžã§ã³3.0ããåã®ããŒãžã§ã³ã§ã¯ãOpenAPIã«ã¯ãã©ã®ãã£ãŒã«ãå€ãã©ã®ãã³ãã¬ãŒãã«æ¿å ¥ã§ããããæå®ããæ¹æ³ããªãã£ããããäžéšã®ããã¥ã¡ã³ãã¯èªç¶èšèªã§èšè¿°ããäžéšã¯ã¯ã©ã€ã¢ã³ããæšæž¬ããå¿ èŠããããŸããã OpenAPI 3.0ã§ã¯ããã®åé¡ã«å¯ŸåŠããããã«ããªã³ã¯ããšåŒã°ããæ°ããæ§æãå°å ¥ãããŠã ãŸããããã®æ©èœãäžè²«ããŠäœ¿çšããã«ã¯ããã€ãã®äœæ¥ãå¿ èŠã§ãã
ãã®ããããã®ã¹ã¿ã€ã«ãšåãããã«ããã³ããŒã¯ããã¥ã¡ã³ããäœæããã¯ã©ã€ã¢ã³ãã¯çŸåšã®APIä»æ§ã§ååã«ããã¥ã¡ã³ãåãããŠããªãå€æ°ã®URIãã¿ãŒã³ãåŠç¿ããŠäœ¿çšããå¿ èŠããããŸãã幞ããªããšã«ãããè¯ããªãã·ã§ã³ããããŸãã
ãªã³ã¯ã䜿çšããŠé¢ä¿ãè¡šã
äžèšã®ãªãœãŒã¹ã次ã®ããã«å€æŽãããå Žåã¯ã©ããªããŸããïŒ
äž»ãªéãã¯ããã®å Žåãå€ã¯å€éšããŒå€ã䜿çšããã«åç §ã䜿çšããŠè¡šçŸãããããšã§ããããã§ã¯ããªã³ã¯ã¯ååãšå€ã®ãã¢ã®åœ¢åŒã§éåžžã®JSONã§èšè¿°ãããŠããŸãïŒJSONã§ãªã³ã¯ãèšè¿°ããä»ã®ã¢ãããŒãã«ã€ããŠèª¬æããã»ã¯ã·ã§ã³ã以äžã«ãããŸãïŒã
ãã¥ãŒã«
Joel
ãã£ãŒã«ããè¿œå ããããããéã®é¢ä¿ãã€ãŸããããããææè ãžã®é¢ä¿ãæ瀺çã«å®è£ ãããŠãã ããšã«æ³šæããŠãã ãã
"pets"
ã
å€æŽ
"id"
ã«ã¯
"self"
ãæ¬è³ªçã«å¿ èŠãŸãã¯éèŠã§ã¯ãããŸãããã䜿çšããŠåæããããŸã
"self"
åãJSONãªããžã§ã¯ãå ã®ä»ã®åå/å€ã®ãã¢ã«ãã£ãŠå±æ§ãšé¢ä¿ãæå®ãããŠãããªãœãŒã¹ãèå¥ããŸãã ãã®ç®çã®ããã«IANAã«ç»é²ãããŠ
"self"
ããåå ã§ãã å®è£ ã®èŠ³ç¹ããã¯ããã¹ãŠã®ããŒã¿ããŒã¹ããŒããªã³ã¯ã«çœ®ãæããã®ã¯éåžžã«ç°¡åã§ãããµãŒããŒã¯ãã¹ãŠã®å€éšããŒã¿ããŒã¹ããŒãURLã«å€æãããããã¯ã©ã€ã¢ã³ãã§äœãããå¿ èŠã¯ãããŸãããããã®å Žåã®APIèªäœã¯å€§å¹ ã«ç°¡çŽ åãããŠããŸããã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®æ¥ç¶ãããŠã³ããŸããæåã®èšèšã§éèŠã ã£ãå€ãã®URIãã¿ãŒã³ã¯äžèŠã«ãªããAPIä»æ§ãšããã¥ã¡ã³ãããåé€ã§ããŸãã
ããã§ããµãŒããŒãã¯ã©ã€ã¢ã³ãã«åœ±é¿ãäžããããšãªãããã€ã§ãæ°ããURLã®åœ¢åŒãå€æŽããããšã劚ãããã®ã¯äœããããŸããïŒãã¡ããããµãŒããŒã¯ä»¥åã«äœæããããã¹ãŠã®URLã«æºæ ãç¶ããå¿ èŠããããŸãïŒããµãŒããŒããã¯ã©ã€ã¢ã³ãã«æž¡ãããURLã«ã¯ãããŒã¿ããŒã¹ã§æå®ãããŠãããšã³ãã£ãã£ã®äž»ããŒãšããã€ãã®ã«ãŒãã£ã³ã°æ å ±ãå«ãŸããŠããå¿ èŠããããŸãããã ããã¯ã©ã€ã¢ã³ãã¯ãµãŒããŒãžã®å¿çäžã«URLãç¹°ãè¿ãã ãã§ãããã¯ã©ã€ã¢ã³ãã¯URLã解æããå¿ èŠããªããããã¯ã©ã€ã¢ã³ãã¯URLã®ãã©ãŒãããæ¹æ³ãç¥ãå¿ èŠã¯ãããŸããããã®çµæãã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®æ¥ç¶ãå°ãªããªããŸãããµãŒããŒã¯ãURL圢åŒãäœã§ãããããæšæž¬ããããããã®åœ¢åŒããURLã®æå³ãæšæž¬ãããããŠã¯ãªããªãããšãã¯ã©ã€ã¢ã³ãã«åŒ·èª¿ãããå Žåã¯ãbase64ãŸãã¯åæ§ã®ãšã³ã³ãŒãã£ã³ã°ã䜿çšããŠç¬èªã®URLãé£èªåããããšãã§ããŸãã
åã®äŸã§ã¯ãããšãã°ãåç §çžå¯ŸURIè¡šèšã䜿çšããŸãã
/people/98765
ããããããURIã絶察圢åŒã§è¡šçŸããå Žåãã¯ã©ã€ã¢ã³ãã¯ããå°ãå¿«é©ã«ãªããŸãïŒãã ããäœæè ã¯ãã®æçš¿ã®ãã©ãŒãããã«ããŸã圹ç«ã¡ãŸããã§ããïŒã pets.org/people/98765..ãã¯ã©ã€ã¢ã³ãã¯ããã®ãããªURIããã圢åŒããå¥ã®åœ¢åŒã«å€æããããã«ãIETFä»æ§ã§å®çŸ©ãããŠããæšæºã®URIèŠåãç¥ã£ãŠããã ãã§ãããããURIã®ç¹å®ã®åœ¢åŒãéžæããããšã¯ããªããæãã»ã©éèŠã§ã¯ãããŸããããã®ç¶æ³ãããããã·ã§ããAPIã®ç¹å®ã®ç¥èãå¿ èŠãšããäžèšã®å€éšããŒããURLãžã®å€æãšæ¯èŒããŠãã ããã以äžã§èª¬æããããã«ãçžå¯ŸURLã¯ãµãŒããŒã®å®è£ è ã«ãšã£ãŠãããã䟿å©ã§ããã絶察URLã¯ããããã»ãšãã©ã®ã¯ã©ã€ã¢ã³ãã«ãšã£ãŠãã䟿å©ã§ããããããããããGoogleãã©ã€ããšGitHubAPIã絶察URLã䜿çšããçç±ã§ãã
ã€ãŸããå€éšããŒã§ã¯ãªããªã³ã¯ã䜿çšããŠAPIéã®é¢ä¿ãè¡šçŸãããšãAPIãšå¯Ÿè©±ããããã«ã¯ã©ã€ã¢ã³ããç¥ãå¿ èŠã®ããæ å ±ã®éãæžããã¯ã©ã€ã¢ã³ããšãµãŒããŒéã§çºçããå¯èœæ§ã®ããæ¥ç¶ã®éãæžããŸãã
æ°Žäžã®å²©
ãªã³ã¯ã®äœ¿çšã«ç§»ãåã«èæ ®ãã¹ãããšãããã€ããããŸãã
å€ãã®APIå®è£ ã«ã¯ãã»ãã¥ãªãã£ãè² è·åæ£ãªã©ã®ãªããŒã¹ãããã·ãæäŸãããŠããŸããäžéšã®ãããã·ã¯URLã®æžãæãã奜ã¿ãŸãã APIãå€éšããŒã䜿çšããŠé¢ä¿ãè¡šãå Žåããããã·ã§æžãæããå¿ èŠãããURLã¯ã¡ã€ã³ãªã¯ãšã¹ãURLã®ã¿ã§ãã HTTPã§ã¯ããã®URLã¯ã¢ãã¬ã¹ããŒïŒããããŒã®æåã®è¡ïŒãšãã¹ãããããŒã®éã§åå²ãããŸãã
ãªã³ã¯ã䜿çšããŠé¢ä¿ãè¡šçŸããAPIã§ã¯ããªã¯ãšã¹ããšã¬ã¹ãã³ã¹ã®äž¡æ¹ã®ããããŒãšæ¬æã«ä»ã®URLãå«ãŸãããããã®URLãæžãæããå¿ èŠããããŸããããã«å¯ŸåŠããã«ã¯ãããã€ãã®ç°ãªãæ¹æ³ããããŸãã
- URL . URL, .
- , . , , , -, , .
- . URL; , URL , -. URL, , , , , . - (, URL, «» «»), . , URL, , URL , , , URL .
å é ã®ã¹ã©ãã·ã¥ã®ãªãçžå¯ŸURLãããããã®URLãåŠçããããŒã¹URLã泚ææ·±ãç解ããŠä¿åããããã«æååã®é£çµã ãã§ãªããæšæºåãããã©ã€ãã©ãªãæäœããå¿ èŠããããããã¯ã©ã€ã¢ã³ãã䜿çšããã®ãããå°é£ã§ãã
ãšã«ãããæšæºåãããã©ã€ãã©ãªã䜿çšããŠURLãåŠçããããšã¯ã¯ã©ã€ã¢ã³ãã«ãšã£ãŠè¯ãç¿æ £ã§ãããå€ãã®ã¯ã©ã€ã¢ã³ãã¯ããã§ã¯ãããŸããã
ãªã³ã¯ã䜿çšããå Žåã¯ãAPIã®ããŒãžã§ã³ç®¡çãå確èªããå¿ èŠãããå ŽåããããŸããå€ãã®APIã§ã¯ã次ã®ããã«URLã«ããŒãžã§ã³çªå·ãå ¥åããã®ãéäŸã§ãã
/v1/pets/12345
/v2/pets/12345
/v1/people/98765
/v2/people/98765
ããã¯äžçš®ã®ããŒãžã§ã³ç®¡çã§ãããç¹å®ã®ãªãœãŒã¹ã®ããŒã¿ãè€æ°ã®ã圢åŒãã§åæã«è¡šç€ºã§ããŸããããã¯ãåŸã§ç·šéããããšãã«æéã®çµéãšãšãã«çžäºã«çœ®ãæããããããŒãžã§ã³ã«é¢ãããã®ã§ã¯ãããŸããã
ãã®ç¶æ³ã¯ãWebæšæºãååšããè€æ°ã®èªç¶èšèªã§åãããã¥ã¡ã³ãã衚瀺ããæ©èœãšéåžžã«ãã䌌ãŠã ãŸãã;ããŒãžã§ã³ã«ãã®ãããªæšæºããªãã®ã¯ãªããšæ®å¿µãªããšã§ããããåããŒãžã§ã³ã«ç¬èªã®URLãå²ãåœãŠãããšã«ãããåããŒãžã§ã³ãå®å šã«æ©èœããWebãªãœãŒã¹ã«ã¢ããã°ã¬ãŒãããŸãããã®çš®ã®ãããŒãžã§ã³ç®¡çãããURLãã«ã¯äœã®åé¡ããããŸãããããªã³ã¯ã®è¡šçŸã«ã¯é©ããŠããŸãããã¯ã©ã€ã¢ã³ããLassieããã©ãŒãããããŒãžã§ã³2ã§èŠæ±ããå Žåãããã¯ãLassieã®ææè ã§ããJoeã«é¢ããæ å ±ããã©ãŒããã2ã§åä¿¡ããããšããæå³ã§ã¯ãªãããããµãŒããŒã¯ãªã³ã¯ã«å«ããããŒãžã§ã³çªå·ãéžæã§ããŸããã
ãããããææè ã説æããããã®ãã©ãŒããã2ã¯æäŸãããªãã§ãããããŸãããªã³ã¯ã§ç¹å®ã®ããŒãžã§ã³ã®URLã䜿çšããããšã«æŠå¿µçãªæå³ã¯ãããŸãããçµå±ã®ãšãããLassieã¯ç¹å®ã®ããŒãžã§ã³ã®Joeã«å±ããŠããã®ã§ã¯ãªããJoeèªäœã«å±ããŠããŸãããããã£ãŠã/ v1 / people / 98765ã®åœ¢åŒã§URLãæå®ããŠãJoeã®ç¹å®ã®ããŒãžã§ã³ãèå¥ããå Žåã§ããJoeèªèº«ãèå¥ããããã«URL / people / 98765ãæå®ããå¿ èŠããããŸããããã¯ã2çªç®ã«äœ¿çšãããªãã·ã§ã³ã§ãããªã³ã¯ã§ããã1ã€ã®ãªãã·ã§ã³ã¯ãURL / people / 98765ã®ã¿ãå®çŸ©ãããã®èŠæ±ããããŒãå«ããããšã§ã¯ã©ã€ã¢ã³ããç¹å®ã®ããŒãžã§ã³ãéžæã§ããããã«ããããšã§ãããã®ããããŒã®æšæºã¯ãããŸããããAccept-VersionãšåŒã¶ãšãæšæºããããŒã®åœåã«é©ããŠããŸããå人çã«ã¯ãããŒãžã§ãã³ã°ã«ããããŒã䜿çšããURLã§ããŒãžã§ã³çªå·ã䜿çšããªãããšã奜ã¿ãŸããããããããŒãžã§ã³çªå·ä»ãã®URLã¯äººæ°ããããç§ã¯ãã°ãã°ã¿ã€ãã«ãå®è£ ããŸããã©ã¡ããåªããŠããããè°è«ãããããäž¡æ¹ãå®è£ ããæ¹ãç°¡åãªã®ã§ããããŒãžã§ã³ç®¡çãããURLãã APIããŒãžã§ã³ç®¡çã«ã€ããŠè©³ããã¯ãã¡ããã芧ãã ãã èšäºã
ãšã«ããããã€ãã®URLãã¿ãŒã³ãææžåããå¿ èŠããããããããŸãã
ã»ãšãã©ã®WebAPIã§ã¯ãPOSTã¡ãœããã䜿çšããŠæ°ãããªãœãŒã¹ãäœæããããšããµãŒããŒã«ãã£ãŠæ°ãããªãœãŒã¹URLãå²ãåœãŠãããŸãããã®ã¡ãœããã䜿çšããŠãªãœãŒã¹ãäœæãããªã³ã¯ã䜿çšããŠé¢ä¿ãæå®ããå Žåããããã®ãªãœãŒã¹ã®URIã®ãã³ãã¬ãŒããå ¬éããå¿ èŠã¯ãããŸããããã ããäžéšã®APIã§ã¯ãã¯ã©ã€ã¢ã³ããæ°ãããªãœãŒã¹ã®URLãå¶åŸ¡ã§ããŸããã¯ã©ã€ã¢ã³ããæ°ãããªãœãŒã¹ã®URLãå¶åŸ¡ã§ããããã«ããããšã§ãããã³ããšã³ãéçºè åãã®APIã¹ã¯ãªãããã¿ãŒã³ã®å€ããå€§å¹ ã«ç°¡çŽ åããAPIã䜿çšããŠæ å ±ã¢ãã«ãå€éšã®æ å ±ãœãŒã¹ãšåæããã¹ã¯ãªããããµããŒãããŸãã HTTPã¯ããã®ç®çã®ããã«ç¹å¥ãªã¡ãœããPUTãæäŸããŸãã PUTã¯ãããªãœãŒã¹ããŸã ååšããªãå Žåã¯ãã®URLã§äœæããååšããå Žåã¯æŽæ°ãããããšãæå³ããŸããAPIã§ã¯ã©ã€ã¢ã³ããPUTã¡ãœããã䜿çšããŠæ°ãããšã³ãã£ãã£ãäœæã§ããå Žåã¯ãããããAPIä»æ§ã«URIãã¿ãŒã³ãå«ããããšã«ãããæ°ããURLãäœæããããã®ã«ãŒã«ãææžåããå¿ èŠããããŸããæ¬æãŸãã¯POSTããããŒã«äž»ããŒã®ãããªå€ãå«ããããšã§ãã¯ã©ã€ã¢ã³ããURLãéšåçã«å¶åŸ¡ã§ããããã«ããããšãã§ããŸãããã®å ŽåãPOST URIãã¿ãŒã³èªäœã¯å¿ èŠãããŸããããçµæãšããŠåŸãããURIã®äºæž¬å¯èœæ§ãæ倧éã«æŽ»çšããã«ã¯ãã¯ã©ã€ã¢ã³ãã¯URIãã¿ãŒã³ãåŠç¿ããå¿ èŠããããŸãããã ããçµæãšããŠåŸãããURIã®äºæž¬å¯èœæ§ãæ倧éã«æŽ»çšããã«ã¯ãã¯ã©ã€ã¢ã³ãã¯URIãã¿ãŒã³ãåŠç¿ããå¿ èŠããããŸãããã ããçµæãšããŠåŸãããURIã®äºæž¬å¯èœæ§ãæ倧éã«æŽ»çšããã«ã¯ãã¯ã©ã€ã¢ã³ãã¯URIãã¿ãŒã³ãåŠç¿ããå¿ èŠããããŸãã
URLãã¿ãŒã³ãææžåããããšãé©åãªãã1ã€ã®ã³ã³ããã¹ãã¯ãAPIãã¯ã©ã€ã¢ã³ãã«èŠæ±ã®URLãšã³ã³ãŒããèš±å¯ããå Žåã§ãããã¹ãŠã®APIã§ãªãœãŒã¹ããªã¯ãšã¹ãã§ããããã§ã¯ãããŸããããããã¯ã¯ã©ã€ã¢ã³ãã«ãšã£ãŠéåžžã«äŸ¿å©ã§ãããåœç¶ãã¯ã©ã€ã¢ã³ãã¯ãªã¯ãšã¹ããURLãšã³ã³ãŒãããGETã¡ãœããã䜿çšããŠçµæãååŸã§ããŸãã次ã®äŸã¯ãã®çç±ã瀺ããŠããŸãã
äžèšã®äŸã§ã¯ãJoeã®ãã¥ãŒã«æ¬¡ã®ååãšå€ã®ãã¢ãå«ãŸããŠããŸãã
"pets": "/pets?owner=/people/98765"
ã¯ã©ã€ã¢ã³ãã¯ããã®URLã䜿çšããããã«ãæšæºä»æ§ã«åŸã£ãŠäœæãããŠããããšãé€ããŠããã®æ§é ã«ã€ããŠäœãç¥ãå¿ èŠã¯ãããŸããããããã£ãŠãã¯ã©ã€ã¢ã³ãã¯ãã¯ãšãªèšèªãåŠç¿ããªããŠãããã®ãªã³ã¯ãããžã§ãŒã®ãããã®ãªã¹ããååŸã§ããŸãããŸããAPIã§URLã®åœ¢åŒãææžåããå¿ èŠã¯ãããŸããããã¯ã©ã€ã¢ã³ããæåã«GETãªã¯ãšã¹ããè¡ã£ãå Žåã«éããŸãã
/people/98765
..ãããã«ããªã¯ãšã¹ããè¡ãæ©èœããããã·ã§ããAPIã«ææžåãããŠããå Žåãã¯ã©ã€ã¢ã³ãã¯ãæåã«ææè èªäœãæœåºããããšãªããåããŸãã¯åçã®ãªã¯ãšã¹ãURLãäœæããŠãé¢å¿ã®ããææè ã®ããããååŸã§ããŸããææè ã®URIãç¥ãã®ã«ååã§ããããããããã«éèŠãªã®ã¯ãã¯ã©ã€ã¢ã³ãã次ã®ãããªãªã¯ãšã¹ããçæããããšãã§ãããšããããšã§ããããããªããã°äžå¯èœã§ã ãURIä»æ§ã§ã¯ããã®ç®çã®ããã«ãããªã¯ãšã¹ãã³ã³ããŒãã³ãããšåŒã°ããHTTPURLã®äžéšãèšè¿°ããŠã ãŸãã
/pets?owner=/people/98765&species=Dog
/pets?species=Dog&breed=Collie
ãURLã®æåã®éšåã®åŸã§ããïŒãæåã®ãïŒãã«ãç§ã䜿çšãããURIãªã¯ãšã¹ãã®ã¹ã¿ã€ã«ã¯ãåžžã«ã¯ã©ã€ã¢ã³ãåºæã®ãªã¯ãšã¹ããURIãªã¯ãšã¹ãã³ã³ããŒãã³ãã«é 眮ããããšã§ãããããã¹ããšåŒã°ããURLã®éšåã§ã¯ã©ã€ã¢ã³ããªã¯ãšã¹ããè¡šçŸããããšãã§ããŸãããšã«ããããããã®URLãã©ã®ããã«æ§ç¯ãããŠããããã¯ã©ã€ã¢ã³ãã«äŒããå¿ èŠããããŸããå®éã«ã¯ãAPIã«åºæã®ãªã¯ãšã¹ãèšèªãèšèšããã³ææžåããŠããŸãããã¡ãããã¯ã©ã€ã¢ã³ãããªã¯ãšã¹ããã¡ãã»ãŒãžã®æ¬æã§ã¯ãªããã¡ãã»ãŒãžã®æ¬æã«é 眮ã§ããããã«ããããšãã§ããŸãã URLãæå®ããGETã§ã¯ãªãPOSTã¡ãœããã䜿çšããŸããURLãµã€ãºã®å®éçãªå¶éïŒæ¯å4kãã€ããè¶ ãããšèªæãããŸãïŒã¯ããã§ã«GETããµããŒãããŠããå Žåã§ãããªã¯ãšã¹ãã«å¯ŸããŠPOSTããµããŒãããããšããå§ãããŸãã
ã¯ãšãªã¯APIã®éåžžã«äŸ¿å©ãªæ©èœã§ãããã¯ãšãªèšèªã®èšèšãšå®è£ ã¯ç°¡åã§ã¯ãªããããGraphQLã®ãã㪠ãã¯ãããžãŒãç»å ŽããŸãããGraphQLã䜿çšããããšããªãããããå§ãã§ããŸããããAPIã«ã¯ãšãªæ©èœãå®è£ ããããã®ä»£æ¿æ段ãšèŠãªãããšãã§ããŸããGraphQLãå«ãAPIãªã¯ãšã¹ãããŒã«ã¯ãHTTPã®ä»£ãããšããŠã§ã¯ãªãããªãœãŒã¹ãèªã¿æžãããããã®æšæºHTTPAPIãžã®ã¢ããªã³ãšããŠæé©ã«äœ¿çšãããŸãã
ã¡ãªã¿ã«... JSONã§ãªã³ã¯ãæžãããã®æè¯ã®æ¹æ³ã¯äœã§ããïŒ
JSONã¯ãHTMLãšã¯ç°ãªãããªã³ã¯ãè¡šçŸããããã®çµã¿èŸŒã¿ã¡ã«ããºã ãåããŠããŸãããå€ãã®äººãJSONã§ãªã³ã¯ãè¡šçŸããæ¹æ³ãç¬èªã«ç解ããŠããããã®ãããªæèŠã®äžéšã¯å€ããå°ãªããå ¬åŒææžã§å ¬éãããŠããŸãããçŸåšããããèŠå¶ããè©å€ã®è¯ãçµç¹ã«ãã£ãŠæ¿èªãããåºæºã¯ãããŸãããäžèšã®äŸã§ã¯ãJSONã§èšè¿°ãããéåžžã®ååãšå€ã®ãã¢ã䜿çšããŠãªã³ã¯ãè¡šçŸããŸããããã®ã¹ã¿ã€ã«ã奜ãã§ããã¡ãªã¿ã«ããã®ã¹ã¿ã€ã«ã¯Googleãã©ã€ããšGitHubã§äœ¿çšãããŠããŸããããªããèŠãããªããäžã€ã®ã¹ã¿ã€ã«ã¯ããã§ãïŒ
{"self": "/pets/12345",
"name": "Lassie",
"links": [
{"rel": "owner" ,
"href": "/people/98765"
}
]
}
å人çã«ã¯ããã®ã¹ã¿ã€ã«ãäœã«é©ããŠãããã¯ããããŸãããããã®ããªãšãŒã·ã§ã³ã®ããã€ãã¯éåžžã«äººæ°ããããŸãã
ç§ã奜ããªJSONåç §ã®å¥ã®ã¹ã¿ã€ã«ãããã次ã®ããã«ãªããŸãã
{"self": "/pets/12345",
"name": "Lassie",
"owner": {"self": "/people/98765"}
}
ãã®ã¹ã¿ã€ã«ã®å©ç¹ã¯ãæ瀺çã«æ¬¡ã®ããšãæäŸããããš
"/people/98765"
ã§ããæååã ãã§ãªãURLã§ããç§ã¯ãã®ãã¿ãŒã³ãRDF / JSONããåŠã³ãŸãã ããã®ãã¿ãŒã³ãç¿åŸããçç±ã®1ã€ã¯ã次ã®äŸã«ç€ºãããã«ãå¥ã®ãªãœãŒã¹ã«ãã¹ãããã1ã€ã®ãªãœãŒã¹ã«é¢ããæ å ±ã衚瀺ããå Žåã¯åžžã«ããã®ãã¿ãŒã³ã䜿çšããå¿ èŠãããããšã§ãããã®ãã¿ãŒã³ããã¡ãã¡ã§äœ¿çšãããšãã³ãŒããåäžã«ãªããŸãã
{"self": "/pets?owner=/people/98765",
"type": "Collection",
"contents": [
{"self": "/pets/12345",
"name": "Lassie",
"owner": {"self": "/people/98765"}
}
]
}
JSONã䜿çšããŠããŒã¿ãè¡šãã®ã«æé©ãªæ¹æ³ã®è©³çŽ°ã«ã€ããŠã¯ããéåžžã«åçŽãªJSONããåç §ããŠãã ãã ã
æåŸã«ãå±æ§ãšé¢ä¿ã®éãã¯äœã§ããïŒ
ã»ãšãã©ã®èªè ã¯ãJSONã«ã¯ãªã³ã¯ãè¡šçŸããããã®çµã¿èŸŒã¿ã®ã¡ã«ããºã ããªãããšã«åæãããšæããŸãããJSONã解éããŠå¥ã®æ¹æ³ã§è°è«ã§ããæ¹æ³ããããŸãã次ã®JSONã«ã€ããŠèããŠã¿ãŸãã
{"self": "/people/98765",
"shoeSize": 10
}
ããã¯
shoeSize
é¢ä¿ã§ã¯ãªãå±æ§ã§ããã10ã¯ãšã³ãã£ãã£ã§ã¯ãªãå€ã§ãããšäžè¬ã«èªããããŠã ãŸãã確ãã«ãæååã10ãã¯ãå®éã«ã¯ãããèªäœããšã³ãã£ãã£ã§ãã11çªç®ã®æŽæ°ãŸã§ã®æ°å€ãåç §ããããšãç®çãšããç¹å¥ãªè¡šèšæ³ã§èšè¿°ãããåç §ã§ãããšäž»åŒµããããšã¯è«ççã§ãã11çªç®ã®æŽæ°ãå®å šã«æå¹ãªãšã³ãã£ãã£ã§ãããæåå
'10'
ããããæããŠããã ãã®å Žåã
'"shoeSize": 10'
ããã§ã¯URIã¯äœ¿çšãããŠããŸããããååãšå€ã®ãã¢ã¯ æŠå¿µçã«åç §ã§ãã
ããŒã«å€ãšæååã«ã€ããŠãåãããšãèšãããããJSONå ã®ãã¹ãŠã®ååãšå€ã®ãã¢ãåç §ãšããŠæ±ãããšãã§ããŸãããã®ããã«JSONã«ã€ããŠèããå Žåã¯ãURLã䜿çšããŠãã€ã³ãããããšãã§ãããšã³ãã£ãã£ãžã®åç §ãšããŠãJSONã§åçŽãªååãšå€ã®ãã¢ã䜿çšããã®ãèªç¶ã§ãã
ããäžè¬çã«ã¯ããã®è°è«ã¯ãå±æ§ãšé¢ä¿ã®éã«åºæ¬çãªéãã¯ãªãããšããŠå®åŒåãããŸããå±æ§ã¯ããšã³ãã£ãã£ãšãæ°å€ãè²ãªã©ã®å¥ã®æœè±¡çãŸãã¯å ·äœçãªãšã³ãã£ãã£éã®åãªãé¢ä¿ã§ãããããæŽå²çã«ããããã®åŠçã¯ç¹å¥ãªæ¹æ³ã§æ±ãããŠããŸãããççŽã«èšã£ãŠãããã¯äžçã®èªèã®ããªãæœè±¡çãªããŒãžã§ã³ã§ãããããã£ãŠã誰ãã«é»ç«ãèŠããŠããªããžã§ã¯ããããã€ããããå°ãããšãã»ãšãã©ã®äººã¯1ã€ãããªããšèšãã§ããããç«ãšãã®é»ãè²ã®2ã€ã®ãªããžã§ã¯ããšããããã®éã®é¢ä¿ãèŠãŠãããšèšã人ã¯ã»ãšãã©ããŸããã
ãªã³ã¯ã¯åã«åªããŠããŸã
ãªã³ã¯ã ãã§ãªãããŒã¿ããŒã¹ããŒãæž¡ãWebAPIã¯ãç¿åŸãé£ãããã¯ã©ã€ã¢ã³ãã§ã®äœ¿çšãå°é£ã§ãããŸãã第1çš®ã®APIã¯ã¯ã©ã€ã¢ã³ããšãµãŒããŒãããç·å¯ã«çµã³ä»ãããæå°å ¬åæ¯ããšããŠãã詳现ãªæ å ±ãå¿ èŠãšãããã®ãã¹ãŠã®æ å ±ãææžåããŠèªã¿åãå¿ èŠããããŸãã第1çš®ã®APIã®å¯äžã®å©ç¹ã¯ãAPIãéåžžã«æ®åããŠããããšãããã°ã©ããŒãAPIã«æ £ããŠããããšãäœææ¹æ³ãšäœ¿çšæ¹æ³ãç¥ã£ãŠããããšã§ãã倧éã®ããã¥ã¡ã³ããå¿ èŠãšããããµãŒããŒããã®ã¯ã©ã€ã¢ã³ãã®ç¬ç«æ§ãæ倧åããé«å質ã®APIã顧客ã«æäŸãããå Žåã¯ãããŒã¿ããŒã¹ããŒã§ã¯ãªãWebAPIãžã®ãªã³ã¯ãæäŸããããšãæ€èšããŠãã ããã