HTTPã¹ããŒã¿ã¹ã³ãŒãã䜿çšããŠAPIãšã©ãŒãçè§£ãã广çã«åŠçããŸããäžçäžã®éçºè åãã«æç¢ºã§æçãªãšã©ãŒã¡ãã»ãŒãžãæäŸãããå ç¢ã§ä¿¡é Œæ§ã®é«ãAPIãæ§ç¯ããããã®ãã¹ããã©ã¯ãã£ã¹ãåŠã³ãŸãã
APIãšã©ãŒåŠçïŒHTTPã¹ããŒã¿ã¹ã³ãŒãã®å æ¬çãªã¬ã€ã
ãœãããŠã§ã¢éçºã®äžçã§ã¯ãAPIïŒã¢ããªã±ãŒã·ã§ã³ããã°ã©ãã³ã°ã€ã³ã¿ãŒãã§ãŒã¹ïŒãææ°ã®ã¢ããªã±ãŒã·ã§ã³ã®ããã¯ããŒã³ãšãªããç°ãªãã·ã¹ãã éã®ã·ãŒã ã¬ã¹ãªéä¿¡ãšããŒã¿äº€æãå¯èœã«ããŠããŸãã APIããŸããŸãè€éã«ãªããã°ããŒãã«ãªããžãã¹ãªãã¬ãŒã·ã§ã³ã«äžå¯æ¬ ã«ãªãã«ã€ããŠãé©åãªãšã©ãŒåŠçãæãéèŠã«ãªããŸãã APIãšã©ãŒåŠçã®æãåºæ¬çãªåŽé¢ã®1ã€ã¯ãHTTPã¹ããŒã¿ã¹ã³ãŒãã®äœ¿çšã§ãã ãã®ã¬ã€ãã§ã¯ãHTTPã¹ããŒã¿ã¹ã³ãŒãã®å æ¬çãªæŠèŠãšããããã广çã«äœ¿çšããŠãäžçäžã®éçºè åãã«æç¢ºã§æçãªãšã©ãŒã¡ãã»ãŒãžãæäŸãããå ç¢ã§ä¿¡é Œæ§ã®é«ãAPIãæ§ç¯ããæ¹æ³ã«ã€ããŠèª¬æããŸãã
HTTPã¹ããŒã¿ã¹ã³ãŒããšã¯ïŒ
HTTPã¹ããŒã¿ã¹ã³ãŒãã¯ãã¯ã©ã€ã¢ã³ãã®èŠæ±ã«å¿ããŠãµãŒããŒããè¿ããã3æ¡ã®ã³ãŒãã§ãã ãããã¯ãèŠæ±ã®çµæã«é¢ããæ å ±ãæäŸããæåãããããšã©ãŒãçºçãããããŸãã¯è¿œå ã®ã¢ã¯ã·ã§ã³ãå¿ èŠãã瀺ããŸãã ãããã®ã³ãŒãã¯HTTPãããã³ã«ã®éèŠãªéšåã§ãããRFC 7231ããã³ãã®ä»ã®é¢é£RFCã§Internet Engineering Task ForceïŒIETFïŒã«ãã£ãŠæšæºåãããŠããŸãã
HTTPã¹ããŒã¿ã¹ã³ãŒãã¯5ã€ã®ã¯ã©ã¹ã«ã°ã«ãŒãåãããŠããããããããç°ãªãå¿çã®ã«ããŽãªã衚ããŠããŸãã
- 1xxïŒæ å ±ïŒïŒãªã¯ãšã¹ããåä¿¡ãããåŠçäžã§ãã ãããã®ã³ãŒãã¯ãAPIãšã©ãŒåŠçã§ã¯ã»ãšãã©äœ¿çšãããŸããã
- 2xxïŒæåïŒïŒãªã¯ãšã¹ãã¯æ£åžžã«åä¿¡ãçè§£ãããã³æ¿èªãããŸããã
- 3xxïŒãªãã€ã¬ã¯ãïŒïŒãªã¯ãšã¹ããå®äºããã«ã¯ãã¯ã©ã€ã¢ã³ããããã«ã¢ã¯ã·ã§ã³ãå®è¡ããå¿ èŠããããŸãã
- 4xxïŒã¯ã©ã€ã¢ã³ããšã©ãŒïŒïŒãªã¯ãšã¹ãã«äžæ£ãªæ§æãå«ãŸããŠããããæºããããšãã§ããŸããã ããã¯ãã¯ã©ã€ã¢ã³ãåŽã®ãšã©ãŒã瀺ããŸãã
- 5xxïŒãµãŒããŒãšã©ãŒïŒïŒãµãŒããŒãæå¹ãªãªã¯ãšã¹ããæºããããšãã§ããŸããã§ããã ããã¯ããµãŒããŒåŽã®ãšã©ãŒã瀺ããŸãã
APIãšã©ãŒåŠçã«ãããŠHTTPã¹ããŒã¿ã¹ã³ãŒããéèŠãªã®ã¯ãªãã§ããïŒ
HTTPã¹ããŒã¿ã¹ã³ãŒãã¯ãããã€ãã®çç±ã§å¹æçãªAPIãšã©ãŒåŠçã«äžå¯æ¬ ã§ãã
- æšæºåãããéä¿¡ïŒãããã¯ããµãŒããŒãèŠæ±ã®çµæãã¯ã©ã€ã¢ã³ãã«äŒéããããã®æšæºåãããæ¹æ³ãæäŸããŸãã ããã«ãããéçºè ã¯ã«ã¹ã¿ã ãšã©ãŒã¡ãã»ãŒãžãè§£éããããšãªãããšã©ãŒãç°¡åã«çè§£ããŠåŠçã§ããŸãã
- éçºè ãšã¯ã¹ããªãšã³ã¹ã®åäžïŒæç¢ºã§æçãªãšã©ãŒã¡ãã»ãŒãžã¯ãé©åãªHTTPã¹ããŒã¿ã¹ã³ãŒããšãšãã«ãéçºè ã®ãšã¯ã¹ããªãšã³ã¹ãå€§å¹ ã«åäžãããŸãã ããã«ãããéçºè ã¯åé¡ãè¿ éã«ç¹å®ããŠè§£æ±ºã§ãããããéçºæéãšãã©ã¹ãã¬ãŒã·ã§ã³ã軜æžãããŸãã
- APIã®ä¿¡é Œæ§ã®åäžïŒHTTPã¹ããŒã¿ã¹ã³ãŒãã¯ã詳现ãªãšã©ãŒæ å ±ãæäŸããããšã«ãããäºæããªãç¶æ³ã«é©åã«å¯Ÿå¿ã§ãããããå ç¢ã§ä¿¡é Œæ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ãéçºè ãæ§ç¯ã§ããããã«ããŸãã
- ãããã°ã®ç°¡çŽ åïŒHTTPã¹ããŒã¿ã¹ã³ãŒãã¯ããšã©ãŒã®ãœãŒã¹ïŒã¯ã©ã€ã¢ã³ãåŽãŸãã¯ãµãŒããŒåŽïŒãæç¢ºã«ç€ºãããšã§ããããã°ãç°¡çŽ åããŸãã
- ã°ããŒãã«ãªäžè²«æ§ïŒã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã®APIãæ§ç¯ããå Žåãæšæºåããããšã©ãŒã³ãŒãã¯ãç°ãªãå°åãèšèªéã§ã®äžè²«ããåäœãä¿èšŒããããã«äžå¯æ¬ ã§ãã ããã«ããããããŸãããåé¿ããäžçäžã®éçºè ãåé¡ãç°¡åã«çè§£ããŠå¯ŸåŠã§ããããã«ãªããŸãã
äžè¬çãªHTTPã¹ããŒã¿ã¹ã³ãŒããšãã®æå³
APIãšã©ãŒåŠçã§äœ¿çšãããæãäžè¬çãªHTTPã¹ããŒã¿ã¹ã³ãŒãã®å èš³ãæ¬¡ã«ç€ºããŸãã
2xxæåã³ãŒã
- 200 OKïŒãªã¯ãšã¹ãã¯æåããŸããã ããã¯ãæåããGETãPUTãPATCHãããã³DELETEãªã¯ãšã¹ãã«å¯Ÿããæšæºçãªå¿çã§ãã
- 201äœææžã¿ïŒãªã¯ãšã¹ãã¯æåããæ°ãããªãœãŒã¹ãäœæãããŸããã ããã¯éåžžãæåããPOSTãªã¯ãšã¹ãã®åŸã«äœ¿çšãããŸãã ããšãã°ãæ°ãããŠãŒã¶ãŒã¢ã«ãŠã³ããäœæãããªã©ã§ãã
- 204ã³ã³ãã³ããªãïŒãªã¯ãšã¹ãã¯æåããŸããããè¿ãã³ã³ãã³ãã¯ãããŸããã ããã¯ãå¿çæ¬æãå¿ èŠãªãDELETEãªã¯ãšã¹ãã«ãã䜿çšãããŸãã
3xxãªãã€ã¬ã¯ãã³ãŒã
- 301æä¹ çã«ç§»åïŒèŠæ±ããããªãœãŒã¹ã¯ãæ°ããURLã«æä¹ çã«ç§»åãããŸããã ã¯ã©ã€ã¢ã³ãã¯ãæ°ããURLãæãããã«ãªã³ã¯ãæŽæ°ããå¿ èŠããããŸãã
- 302èŠã€ãããŸããïŒèŠæ±ããããªãœãŒã¹ã¯ãäžæçã«å¥ã®URLã«ãããŸãã ã¯ã©ã€ã¢ã³ãã¯ãä»åŸã®ãªã¯ãšã¹ãã§å ã®URLãåŒãç¶ã䜿çšããå¿ èŠããããŸãã äžæçãªãªãã€ã¬ã¯ãã«ãã䜿çšãããŸãã
- 304倿ŽãããŠããŸããïŒãªãœãŒã¹ã®ã¯ã©ã€ã¢ã³ãã®ãã£ãã·ã¥ããŒãžã§ã³ã¯ãŸã æå¹ã§ãã ãµãŒããŒã¯ããã£ãã·ã¥ãããããŒãžã§ã³ã䜿çšããããã«ã¯ã©ã€ã¢ã³ãã«æç€ºããŠããŸãã ããã«ããã垯åå¹ ãç¯çŽãããããã©ãŒãã³ã¹ãåäžããŸãã
4xxã¯ã©ã€ã¢ã³ããšã©ãŒã³ãŒã
ãããã®ã³ãŒãã¯ãã¯ã©ã€ã¢ã³ãããªã¯ãšã¹ãã§ãšã©ãŒãç¯ããããšã瀺ããŸãã ãããã¯ãã¯ã©ã€ã¢ã³ãã«äœãééã£ãŠããããéç¥ããŠããªã¯ãšã¹ããä¿®æ£ã§ããããã«ããããã«éèŠã§ãã
- 400ç¡å¹ãªãªã¯ãšã¹ãïŒæ§æãæ£ãããªããããã©ã¡ãŒã¿ãŒãç¡å¹ã§ããããããµãŒããŒããªã¯ãšã¹ããçè§£ã§ããŸããã§ããã ããšãã°ãå¿ é ãã£ãŒã«ããæ¬ èœããŠããããããŒã¿åãééã£ãŠããå Žåã
- 401èªèšŒãããŠããŸããïŒãªã¯ãšã¹ãã«ã¯èªèšŒãå¿ èŠã§ãã ã¯ã©ã€ã¢ã³ãã¯æå¹ãªè³æ Œæ å ±ïŒAPIããŒãŸãã¯JWTããŒã¯ã³ãªã©ïŒãæäŸããå¿ èŠããããŸãã ããšãã°ããã°ã€ã³ããã«ä¿è·ããããªãœãŒã¹ã«ã¢ã¯ã»ã¹ããå Žåã
- 403çŠæ¢ïŒã¯ã©ã€ã¢ã³ãã¯èªèšŒãããŠããŸãããèŠæ±ããããªãœãŒã¹ã«ã¢ã¯ã»ã¹ããæš©éããããŸããã ããšãã°ããŠãŒã¶ãŒã管çè å°çšã®ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ããããšããå Žåã
- 404èŠã€ãããŸããïŒèŠæ±ããããªãœãŒã¹ããµãŒããŒã§èŠã€ãããŸããã§ããã ããã¯ãã¯ã©ã€ã¢ã³ããååšããªãURLã«ã¢ã¯ã»ã¹ããããšããå Žåã«çºçããäžè¬çãªãšã©ãŒã§ãã ããšãã°ãç¡å¹ãªIDã§ãŠãŒã¶ãŒãããã¡ã€ã«ã«ã¢ã¯ã»ã¹ããå Žåã
- 405ã¡ãœãããèš±å¯ãããŠããŸããïŒãªã¯ãšã¹ãã§äœ¿çšãããHTTPã¡ãœããã¯ãèŠæ±ããããªãœãŒã¹ã§ã¯ãµããŒããããŠããŸããã ããšãã°ãèªã¿åãå°çšãšã³ããã€ã³ãã§POSTãªã¯ãšã¹ãã䜿çšããããšããå Žåã
- 409ç«¶åïŒãªãœãŒã¹ã®çŸåšã®ç¶æ ãšã®ç«¶åãåå ã§ããªã¯ãšã¹ããå®äºã§ããŸããã§ããã ããšãã°ãæ¢ã«ååšããäžæã®èå¥åãæã€ãªãœãŒã¹ãäœæããããšããå Žåã
- 415ãµããŒããããŠããªãã¡ãã£ã¢ã¿ã€ãïŒãµãŒããŒã¯ããªã¯ãšã¹ãæ¬æã®ã¡ãã£ã¢ã¿ã€ãããµããŒãããŠããŸããã ããšãã°ãXMLã®ã¿ãåãå ¥ãããšã³ããã€ã³ãã«JSONãã€ããŒããéä¿¡ããå Žåã
- 422åŠçã§ããªããšã³ãã£ãã£ïŒãªã¯ãšã¹ãã¯æŽåœ¢åŒã§ãããã»ãã³ãã£ãã¯ãšã©ãŒãåå ã§åŠçã§ããŸããã§ããã ããã¯ãæ€èšŒãšã©ãŒã«ãã䜿çšãããŸãã ããšãã°ãç¡å¹ãªã¡ãŒã«åœ¢åŒãŸãã¯è€éãã®èŠä»¶ãæºãããªããã¹ã¯ãŒãã䜿çšããŠãã©ãŒã ãéä¿¡ããå Žåã
- 429ãªã¯ãšã¹ããå€ãããŸãïŒã¯ã©ã€ã¢ã³ããäžå®ã®æéå ã«éä¿¡ãããªã¯ãšã¹ããå€ãããŸãã ããã¯ãã¬ãŒãå¶éã«äœ¿çšãããŸãã ããšãã°ããŠãŒã¶ãŒã1æéãããã«è¡ãããšãã§ããAPIåŒã³åºãã®æ°ãå¶éããŸãã
5xxãµãŒããŒãšã©ãŒã³ãŒã
ãããã®ã³ãŒãã¯ããªã¯ãšã¹ãã®åŠçäžã«ãµãŒããŒã§ãšã©ãŒãçºçããããšã瀺ããŸãã ãããã¯éåžžããµãŒããŒåŽã®åé¡ã瀺ããŠããã調æ»ãå¿ èŠã§ãã
- 500å éšãµãŒããŒãšã©ãŒïŒãµãŒããŒãäºæããªãç¶æ ã«ééããããšã瀺ãäžè¬çãªãšã©ãŒã¡ãã»ãŒãžã å¯èœã§ããã°ãããå ·äœçãªãšã©ãŒã¡ãã»ãŒãžãæäŸããããšã§ããããåé¿ããå¿ èŠããããŸãã
- 502äžæ£ãªã²ãŒããŠã§ã€ïŒã²ãŒããŠã§ã€ãŸãã¯ãããã·ãšããŠæ©èœããŠãããµãŒããŒããå¥ã®ãµãŒããŒããç¡å¹ãªå¿çãåä¿¡ããŸããã ããã¯ãã¢ããã¹ããªãŒã ãµãŒããŒã®åé¡ã瀺ãããšããããããŸãã
- 503ãµãŒãã¹å©çšäžå¯ïŒäžæçãªéè² è·ãŸãã¯ã¡ã³ããã³ã¹ã®ããããµãŒããŒã¯çŸåšãªã¯ãšã¹ããåŠçã§ããŸããã ããšãã°ãã¹ã±ãžã¥ãŒã«ãããã¡ã³ããã³ã¹äžãŸãã¯ãã©ãã£ãã¯ã®æ¥å¢äžãªã©ã§ãã
- 504ã²ãŒããŠã§ã€ã¿ã€ã ã¢ãŠãïŒã²ãŒããŠã§ã€ãŸãã¯ãããã·ãšããŠæ©èœããŠãããµãŒããŒããã¿ã€ã ãªãŒã«å¥ã®ãµãŒããŒããå¿çãåä¿¡ããŸããã§ããã ããã¯ãã¢ããã¹ããªãŒã ãµãŒããŒã®ã¿ã€ã ã¢ãŠãã®åé¡ã瀺ããŸãã
APIã§HTTPã¹ããŒã¿ã¹ã³ãŒããå®è£ ããããã®ãã¹ããã©ã¯ãã£ã¹
APIã§HTTPã¹ããŒã¿ã¹ã³ãŒãã广çã«å©çšããã«ã¯ã次ã®ãã¹ããã©ã¯ãã£ã¹ãæ€èšããŠãã ããã
- é©åãªã³ãŒããéžæããïŒãšã©ãŒã®æ§è³ªãæ£ç¢ºã«åæ ããæãé©åãªHTTPã¹ããŒã¿ã¹ã³ãŒããæ éã«éžæããŠãã ããã ããå ·äœçãªã³ãŒããå©çšå¯èœãªå Žåã¯ã500å éšãµãŒããŒãšã©ãŒã®ãããªæ±çšã³ãŒãã®äœ¿çšã¯é¿ããŠãã ããã
- æçãªãšã©ãŒã¡ãã»ãŒãžãæäŸããïŒåHTTPã¹ããŒã¿ã¹ã³ãŒãã«ã¯ããšã©ãŒã®åå ã説æããè§£æ±ºæ¹æ³ãææ¡ããæç¢ºã§ç°¡æœãªãšã©ãŒã¡ãã»ãŒãžãæ·»ããŠãã ããã ãšã©ãŒã¡ãã»ãŒãžã¯ã人éãèªãã圢åŒã§ãããŸããŸãªããã¯ã°ã©ãŠã³ãã®éçºè ãçè§£ãããããã®ã§ããå¿ èŠããããŸãã
- äžè²«ãããšã©ãŒåœ¢åŒã䜿çšããïŒHTTPã¹ããŒã¿ã¹ã³ãŒãããšã©ãŒã¡ãã»ãŒãžãããã³é¢é£ãããšã©ãŒã®è©³çްãå«ãããšã©ãŒå¿çã®äžè²«ãã圢åŒã確ç«ããŸãã JSONã¯ãAPIå¿çã«æãäžè¬çã«äœ¿çšããã圢åŒã§ãã
- ãšã©ãŒããã°ã«èšé²ããïŒHTTPã¹ããŒã¿ã¹ã³ãŒãããšã©ãŒã¡ãã»ãŒãžããªã¯ãšã¹ãã®è©³çްãããã³é¢é£ããã³ã³ããã¹ãæ å ±ãªã©ããã¹ãŠã®APIãšã©ãŒããµãŒããŒåŽã«ãã°ã«èšé²ããŸãã ããã¯ãåé¡ãããè¿ éã«ç¹å®ããŠè§£æ±ºããã®ã«åœ¹ç«ã¡ãŸãã
- äŸå€ãé©åã«åŠçããïŒäºæããªããšã©ãŒãã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ãããã®ãé²ãããã«ãã³ãŒãã§é©åãªäŸå€åŠçãå®è£ ããŸãã äŸå€ããã£ããããé©åãªHTTPã¹ããŒã¿ã¹ã³ãŒããšãšã©ãŒã¡ãã»ãŒãžãã¯ã©ã€ã¢ã³ãã«è¿ããŸãã
- APIãææžåããïŒAPIãè¿ãå¯èœæ§ã®ãããã¹ãŠã®HTTPã¹ããŒã¿ã¹ã³ãŒããšãšã©ãŒã¡ãã»ãŒãžãæç¢ºã«ææžåããŸãã ããã¯ãéçºè ããšã©ãŒã®åŠçæ¹æ³ãçè§£ããããå ç¢ãªçµ±åãæ§ç¯ããã®ã«åœ¹ç«ã¡ãŸãã Swagger / OpenAPIãªã©ã®ããŒã«ã¯ãAPIããã¥ã¡ã³ããèªåçã«çæã§ããŸãã
- ã¬ãŒãå¶éãå®è£ ããïŒã¬ãŒãå¶éãå®è£ ããŠãAPIãæªçšããä¿è·ããŸãã ã¯ã©ã€ã¢ã³ããã¬ãŒãå¶éãè¶ ããå Žåã¯ã429ãªã¯ãšã¹ããå€ããããšã©ãŒãè¿ããŸãã ããã«ãããAPIããã¹ãŠã®ãŠãŒã¶ãŒãå©çšã§ããç¶æ ãç¶æã§ããããã«ãªããŸãã
- APIãç£èŠããïŒAPIã®ãšã©ãŒãšããã©ãŒãã³ã¹ã®åé¡ãç£èŠããŸãã ãšã©ãŒãçºçãããšãã«éç¥ãåãåãããã«ã¢ã©ãŒããèšå®ããŠãè¿ éã«èª¿æ»ããŠè§£æ±ºã§ããããã«ããŸãã DatadogãNew RelicãPrometheusãªã©ã®ããŒã«ãAPIç£èŠã«äœ¿çšã§ããŸãã
- ããŒã«ãªãŒãŒã·ã§ã³ïŒåœéåïŒãæ€èšããïŒã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«ãµãŒãã¹ãæäŸããAPIã®å Žåã¯ããšã©ãŒã¡ãã»ãŒãžãããŸããŸãªèšèªã«ããŒã«ã©ã€ãºããããšãæ€èšããŠãã ããã ããã«ãããè±èªã話ããªãéçºè ã®éçºè ãšã¯ã¹ããªãšã³ã¹ãå€§å¹ ã«åäžããŸãã 翻蚳ãµãŒãã¹ãŸãã¯ãªãœãŒã¹ãã³ãã«ã䜿çšããŠã翻蚳ã管çã§ããŸãã
ã¢ã¯ã·ã§ã³ã«ãããHTTPã¹ããŒã¿ã¹ã³ãŒãã®äŸ
ããŸããŸãªAPIã·ããªãªã§HTTPã¹ããŒã¿ã¹ã³ãŒãã䜿çšã§ããå®çšçãªäŸã次ã«ç€ºããŸãã
äŸ1ïŒãŠãŒã¶ãŒèªèšŒ
ã¯ã©ã€ã¢ã³ããæ£ãããªãè³æ Œæ å ±ã䜿çšããŠAPIã§èªèšŒã詊ã¿ãŸãã
ãªã¯ãšã¹ãïŒ
POST /auth/login
Content-Type: application/json
{
"username": "invalid_user",
"password": "wrong_password"
}
ã¬ã¹ãã³ã¹ïŒ
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"error": {
"code": "invalid_credentials",
"message": "ç¡å¹ãªãŠãŒã¶ãŒåãŸãã¯ãã¹ã¯ãŒã"
}
}
ãã®äŸã§ã¯ããµãŒããŒã¯401 Unauthorizedã¹ããŒã¿ã¹ã³ãŒããè¿ããã¯ã©ã€ã¢ã³ããèªèšŒã«å€±æããããšã瀺ããŠããŸãã å¿çæ¬æã«ã¯ããšã©ãŒã³ãŒããšãšã©ãŒã®åå ã説æããã¡ãã»ãŒãžãå«ãJSONãªããžã§ã¯ããå«ãŸããŠããŸãã
äŸ2ïŒãªãœãŒã¹ãèŠã€ãããŸãã
ã¯ã©ã€ã¢ã³ããååšããªããªãœãŒã¹ãååŸããããšããŠããŸãã
ãªã¯ãšã¹ãïŒ
GET /users/12345
ã¬ã¹ãã³ã¹ïŒ
HTTP/1.1 404 Not Found
Content-Type: application/json
{
"error": {
"code": "resource_not_found",
"message": "ID 12345ã®ãŠãŒã¶ãŒãèŠã€ãããŸãã"
}
}
ãã®äŸã§ã¯ããµãŒããŒã¯404 Not Foundã¹ããŒã¿ã¹ã³ãŒããè¿ããèŠæ±ããããªãœãŒã¹ãååšããªãããšã瀺ããŠããŸãã å¿çæ¬æã«ã¯ããšã©ãŒã³ãŒããšãæå®ãããIDã®ãŠãŒã¶ãŒãèŠã€ãããªãã£ãããšã説æããã¡ãã»ãŒãžãå«ãJSONãªããžã§ã¯ããå«ãŸããŠããŸãã
äŸ3ïŒæ€èšŒãšã©ãŒ
ã¯ã©ã€ã¢ã³ããç¡å¹ãªããŒã¿ã䜿çšããŠæ°ãããªãœãŒã¹ãäœæããããšããŠããŸãã
ãªã¯ãšã¹ãïŒ
POST /users
Content-Type: application/json
{
"name": "",
"email": "invalid_email"
}
ã¬ã¹ãã³ã¹ïŒ
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
{
"errors": [
{
"field": "name",
"code": "required",
"message": "ååãå¿
èŠã§ã"
},
{
"field": "email",
"code": "invalid_format",
"message": "ã¡ãŒã«ã¢ãã¬ã¹ãæå¹ãªåœ¢åŒã§ã¯ãããŸãã"
}
]
}
ãã®äŸã§ã¯ããµãŒããŒã¯422 Unprocessable Entityã¹ããŒã¿ã¹ã³ãŒããè¿ãããªã¯ãšã¹ãã¯æŽåœ¢åŒã§ãããæ€èšŒãšã©ãŒãåå ã§åŠçã§ããªãã£ãããšã瀺ããŠããŸãã å¿çæ¬æã«ã¯ããšã©ãŒã®ãªã¹ããå«ãJSONãªããžã§ã¯ããå«ãŸããŠãããããããã«ãšã©ãŒã®åå ãšãªã£ããã£ãŒã«ãããšã©ãŒã³ãŒããããã³ãšã©ãŒã説æããã¡ãã»ãŒãžãå«ãŸããŠããŸãã
HTTPã¹ããŒã¿ã¹ã³ãŒããšAPIã»ãã¥ãªãã£
HTTPã¹ããŒã¿ã¹ã³ãŒããé©åã«äœ¿çšãããšãAPIã»ãã¥ãªãã£ã«ãè²¢ç®ã§ããŸãã ããšãã°ãé床ã«åé·ãªãšã©ãŒã¡ãã»ãŒãžãåé¿ãããšãæ»æè ãã·ã¹ãã ã«é¢ããæ©å¯æ å ±ãååŸããã®ãé²ãããšãã§ããŸãã èªèšŒããã³æ¿èªãšã©ãŒãåŠçããå Žåã¯ãã¢ã«ãŠã³ãã®åæããã®ä»ã®æ»æãé²ãããã«ãäžè²«æ§ã®ããé衚瀺ã®ãšã©ãŒã¡ãã»ãŒãžãè¿ãããšãéèŠã§ãã
æšæºã®HTTPã¹ããŒã¿ã¹ã³ãŒããè¶ ããŠïŒã«ã¹ã¿ã ãšã©ãŒã³ãŒã
æšæºã®HTTPã¹ããŒã¿ã¹ã³ãŒãã¯å¹ åºãã·ããªãªã«å¯Ÿå¿ããŠããŸããããšã©ãŒã«é¢ããããå ·äœçãªæ å ±ãæäŸããããã«ã«ã¹ã¿ã ãšã©ãŒã³ãŒããå®çŸ©ããå¿ èŠãããå ŽåããããŸãã ã«ã¹ã¿ã ãšã©ãŒã³ãŒãã䜿çšããå Žåã¯ãæšæºã®HTTPã¹ããŒã¿ã¹ã³ãŒããšãšãã«ãå¿çæ¬æã«å«ããããšããå§ãããŸãã ããã«ãããã¯ã©ã€ã¢ã³ãã¯ãšã©ãŒã®ã¿ã€ããç°¡åã«ç¹å®ããé©åãªã¢ã¯ã·ã§ã³ãå®è¡ã§ããŸãã
APIãšã©ãŒåŠçããã¹ãããããã®ããŒã«
ããã€ãã®ããŒã«ãAPIãšã©ãŒåŠçã®ãã¹ããšæ€èšŒã«åœ¹ç«ã¡ãŸãã
- PostmanïŒAPIã«ãªã¯ãšã¹ããéä¿¡ããHTTPã¹ããŒã¿ã¹ã³ãŒãããšã©ãŒã¡ãã»ãŒãžãªã©ã®å¿çãæ€æ»ã§ãããäžè¬çãªAPIã¯ã©ã€ã¢ã³ãã
- Swagger InspectorïŒOpenAPIå®çŸ©ã«å¯ŸããŠAPIããã¹ããããšã©ãŒåŠçã®äžäžèŽãç¹å®ã§ããããŒã«ã
- èªåãã¹ããã¬ãŒã ã¯ãŒã¯ïŒJestãMochaãPytestãªã©ã®èªåãã¹ããã¬ãŒã ã¯ãŒã¯ã䜿çšããŠãAPIãšã©ãŒåŠçã®æ£ç¢ºæ§ãæ€èšŒãããã¹ããäœæããŸãã
çµè«
HTTPã¹ããŒã¿ã¹ã³ãŒãã¯APIãšã©ãŒåŠçã®åºæ¬çãªåŽé¢ã§ãããã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã®å ç¢ã§ä¿¡é Œæ§ãé«ãããŠãŒã¶ãŒãã¬ã³ããªãŒãªAPIãæ§ç¯ããããã«äžå¯æ¬ ã§ãã ããŸããŸãªHTTPã¹ããŒã¿ã¹ã³ãŒããçè§£ããããããå®è£ ããããã®ãã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ãéçºè ã®ãšã¯ã¹ããªãšã³ã¹ãå€§å¹ ã«åäžããããããã°ãç°¡çŽ åããAPIã®å šäœçãªå質ãåäžãããããšãã§ããŸãã é©åãªã³ãŒããéžæããæçãªãšã©ãŒã¡ãã»ãŒãžãæäŸããäžè²«ãããšã©ãŒåœ¢åŒã䜿çšããAPIãå®å šã«ææžåããããšãå¿ããªãã§ãã ããã ããããããšã§ã䜿ãããããä¿¡é Œæ§ãé«ããçµ¶ããé²åããããžã¿ã«ç°å¢ã®èª²é¡ã«å¯ŸåŠããããã®æºåãæŽã£ãAPIãäœæã§ããŸãã