REST API ã®ãã¹ã ãã©ã¯ãã£ã¹
REST API ãèšèšããæ¡åŒµæ§ãä¿å®æ§ãã»ãã¥ãªãã£ã確ä¿ããããã®ãã¹ã ãã©ã¯ãã£ã¹ã

ææ°ã® ãœãããŠã§ã¢éçºã® åéã§ã¯ã匷åã§å¹ççãªã¢ããªã±ãŒã·ã§ã³ãäœæã§ãããã©ããã¯ãå€ãã®å ŽåãWeb API ã®ç¿åŸã«ããã£ãŠããŸãã Representational State Transfer (REST) ã¯ããœãããŠã§ã¢ ã·ã¹ãã ã®ããŸããŸãªã³ã³ããŒãã³ãéã®ã·ãŒã ã¬ã¹ãªéä¿¡ãä¿é²ãã API ã®èšèšãšæ§ç¯ã®åºç€ãšããŠç»å ŽããŸããã REST ã®åªé ãã¯ããã®ã·ã³ãã«ããšåºæ¬çãªã¢ãŒããã¯ãã£ååã®éµå®ã«ãããéçºè ã¯ã¹ã±ãŒã©ãã«ã§ä¿å®æ§ãé«ããçžäºéçšå¯èœãª API ãäœæã§ããŸãã
ãããã REST API ã®å¯èœæ§ãæå€§éã«æŽ»çšããã«ã¯ããã®åºæ¬åçãçè§£ããã ãã§ã¯äžååã§ããå¹ççãªããŒã¿äº€æãšãŠãŒã¶ãŒ ãšã¯ã¹ããªãšã³ã¹ã®åäžã«è²¢ç®ããé«å質㮠API ãäœæããã«ã¯ããã®èšèšãå®è£ ãã¡ã³ããã³ã¹ã管çãããã¹ã ãã©ã¯ãã£ã¹ãæ·±ãæãäžããå¿ èŠããããŸãããã®ããã°èšäºã§ã¯ããœãããŠã§ã¢éçºã®åãçµã¿ãæ°ããªé«ã¿ã«åŒãäžãããéèŠãª REST API ã®ãã¹ã ãã©ã¯ãã£ã¹ãæããã«ããŸãã
èªèšŒãšèªå¯
REST API ãèšèšããå ŽåããªãœãŒã¹ã®ã»ãã¥ãªãã£ã確ä¿ããããšãæãéèŠã§ããèªèšŒãšèªå¯ã¯ãAPI ãäžæ£ã¢ã¯ã»ã¹ãæªçšããä¿è·ããããã«èæ ®ããå¿ èŠããã 2 ã€ã®éèŠãªåŽé¢ã§ããããã§ã¯ã广çãªèªèšŒããã³èªå¯ã¡ã«ããºã ãå®è£ ããããã®ããŸããŸãªæŠç¥ã«ã€ããŠèª¬æããŸãã
èªèšŒ
èªèšŒã¯ãAPI ã«ã¢ã¯ã»ã¹ããããšããŠãããŠãŒã¶ãŒãèå¥ããããã»ã¹ã§ãã广çãªèªèšŒã¡ã«ããºã ã§ã¯ãAPI ã®ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãèš±å¯ããåã«ããŠãŒã¶ãŒã® ID ãæ€èšŒããå¿ èŠããããŸãã RESTful API ã§äžè¬çã«äœ¿çšãããèªèšŒã¹ããŒã ã«ã¯ãBasic èªèšŒãAPI ããŒãOAuth 2.0ãããã³ JSON Web Token (JWT) ãå«ãŸããŸãã
- åºæ¬èªèšŒ: åºæ¬èªèšŒã§ã¯ãã¯ã©ã€ã¢ã³ãã¯
AuthorizationããããŒãä»ããŠãbase64 ã§ãšã³ã³ãŒãããããŠãŒã¶ãŒã®è³æ Œæ å ± (ãŠãŒã¶ãŒåãšãã¹ã¯ãŒã) ãéä¿¡ããŸãããã®æ¹æ³ã¯å®è£ ãç°¡åã§ãããç¹ã«æå·åãããŠããªãæ¥ç¶ãä»ããŠéä¿¡ãããå Žåã転éäžã«èªèšŒæ å ±ãååãããå¯èœæ§ããããããå®å šæ§ã¯äœããªããŸãã - API ããŒ: API ããŒã¯åãŠãŒã¶ãŒãŸãã¯ã¢ããªã±ãŒã·ã§ã³ã«å²ãåœãŠãããäžæã®ããŒã¯ã³ã§ãããéåžžã¯å API ãªã¯ãšã¹ãã®ã¯ãšãª ãã©ã¡ãŒã¿ãŒãŸãã¯ããããŒãšããŠæž¡ãããŸããããã¯ãæ©å¯æ§ã®äœãããŒã¿ãšåçŽãªèªèšŒèŠä»¶ãå«ããããªã㯠API ã«é©ããŠããŸããåºæ¬èªèšŒãããå®å šã§ãããOAuth 2.0 ã JWT ãªã©ã®ããé«åºŠãªã¹ããŒã ã«èŠããããã现ããå¶åŸ¡ã¯æäŸãããŸããã
- OAuth 2.0: OAuth 2.0 ã¯ãAPI ãžã®å®å šãªå§ä»»ã¢ã¯ã»ã¹ã®ããã«åºã䜿çšãããŠããæšæºã§ããããã«ããããŠãŒã¶ãŒã®åœ¹å²ãã¢ããªã±ãŒã·ã§ã³ããåé¢ãããã¢ããªã±ãŒã·ã§ã³ããŠãŒã¶ãŒã®è³æ Œæ å ±ãå¿ èŠãšããã«ãŠãŒã¶ãŒã®ä»£ããã«åäœã§ããããã«ãªããŸãã OAuth 2.0 ã¯ãããŸããŸãªã·ããªãªã«å¿ããŠããŸããŸãªèš±å¯ã¿ã€ã (èªå¯ã³ãŒããæé»çããã¹ã¯ãŒããã¯ã©ã€ã¢ã³ãè³æ Œæ å ±ãªã©) ãæäŸããŸãã
- JSON Web Token (JWT): JWT ã¯ãåœäºè éã§ã¯ã¬ãŒã ãå®å šã«è¡šçŸããããã®ã³ã³ãã¯ããªèªå·±å®çµåã®æ¹æ³ã§ããå€ãã®å ŽåãOAuth 2.0 ãšãšãã«äœ¿çšãããã»ãã¥ãªãã£å±€ã远å ãããŸãã JWT ã䜿çšãããšãããŒã«ãæš©éãªã©ãèªèšŒããããŠãŒã¶ãŒã«é¢ãã詳现æ å ±ãããŒã¯ã³èªäœã«å«ããããšãã§ããŸããããŒã¯ã³ã¯ãµãŒããŒã«ãã£ãŠçœ²åããããªãã·ã§ã³ã§æå·åãããæ¹ãã鲿¢ãšããŒã¿ã®æ©å¯æ§ãä¿èšŒãããŸãã

èªå¯
æ¿èªã¯ããŠãŒã¶ãŒã®ããŒã«ãŸãã¯æš©éã«åºã¥ããŠç¹å®ã®ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãèš±å¯ãŸãã¯æåŠããããã»ã¹ã§ããããã¯èªèšŒãæåããåŸã«è¡ããããŠãŒã¶ãŒã API ã§ã§ããããšãšã§ããªãããšãå¶åŸ¡ããããã«äžå¯æ¬ ã§ããããŒã«ããŒã¹ã®ã¢ã¯ã»ã¹å¶åŸ¡ (RBAC) ãšå±æ§ããŒã¹ã®ã¢ã¯ã»ã¹å¶åŸ¡ (ABAC) ã¯ãèªå¯ãå®è£ ããããã® 2 ã€ã®äžè¬çãªæ¹æ³ã§ãã
- ããŒã«ããŒã¹ã®ã¢ã¯ã»ã¹å¶åŸ¡ (RBAC): RBAC ã§ã¯ãã¢ã¯ã»ã¹èš±å¯ãããŒã«ã«é¢é£ä»ãããããŠãŒã¶ãŒã«ã¯è²¬ä»»ã«åºã¥ããŠããŒã«ãä»äžãããŸãã RBAC ã¯å®è£ ãšç®¡çãæ¯èŒçç°¡åã§ãã»ãšãã©ã®ã¢ããªã±ãŒã·ã§ã³ã«é©ããŠããŸãã
- 屿§ããŒã¹ã®ã¢ã¯ã»ã¹å¶åŸ¡ (ABAC): ABAC ã¯ã远å ã®ãŠãŒã¶ãŒå±æ§ãã¢ã¯ã»ã¹ããããªãœãŒã¹ããŸãã¯ç°å¢ãèæ ®ããŠããã詳现ãªã¢ã¯ã»ã¹å¶åŸ¡ã®æ±ºå®ãè¡ãããšã«ãã£ãŠ RBAC ãæ¡åŒµããŸãã ABAC 㯠RBAC ãããæè»ã§ãããå®è£ ãšç®¡çãããè€éã§ãã
ããŒãžã§ã³ç®¡çãšéæšå¥š
API ãé²åããã«ã€ããŠãæ¢åã®ã¯ã©ã€ã¢ã³ãã«åœ±é¿ãäžããå¯èœæ§ã®ããé倧ãªå€æŽãå°å ¥ããå¿ èŠãçããå¯èœæ§ããããŸãã API ã®ããŒãžã§ã³ç®¡çã¯ãäžäœäºææ§ãç¶æããAPI ã䜿çšãããŠãŒã¶ãŒã®ã¹ã ãŒãºãªç§»è¡ã®ããã«éèŠã§ãã REST API ãããŒãžã§ã³ç®¡çããããã® 3 ã€ã®äž»ãªæŠç¥ã¯ãURI ããŒãžã§ãã³ã°ãããã㌠ããŒãžã§ãã³ã°ãããã³ã³ã³ãã³ã ããŽã·ãšãŒã·ã§ã³ (ããããŒã®åãå ¥ã) ã§ãã
- URI ã®ããŒãžã§ãã³ã°: ããã¯æãç°¡åãªã¢ãããŒãã§ãããURI ã«ããŒãžã§ã³çªå·ãçŽæ¥å«ããŸããããšãã°ã
https://api.example.com/v1/usersããã³https://api.example.com/v2/usersã§ãã URI ã®ããŒãžã§ã³ç®¡çã¯å®è£ ãšçè§£ãç°¡åã§ãããURI ã¯äžæã®ãªãœãŒã¹ã衚ãå¿ èŠããããšãã REST ååã«éåããŸãã - ããããŒã®ããŒãžã§ã³ç®¡ç: ãã®ã¢ãããŒãã§ã¯ãAPI ããŒãžã§ã³ã¯
X-API-Version: 1ãX-API-Version: 2ã®ã«ã¹ã¿ã ããããŒã§æå®ãããŸããããããŒã®ããŒãžã§ã³ç®¡çã¯ãURI ã®ããŒãžã§ã³ç®¡çãããç ©ããããå°ãªããURI ãã¯ãªãŒã³ã«ä¿ã¡ãŸãããã¯ã©ã€ã¢ã³ãã«ãšã£ãŠã¯çŽæçã§ã¯ãªãå¯èœæ§ããããŸãã - ã³ã³ãã³ã ããŽã·ãšãŒã·ã§ã³ (Accept ããããŒ): ãã®æ¹æ³ã§ã¯ãæšæºã®
AcceptããããŒãå©çšããŠãã¡ãã£ã¢ ã¿ã€ãã§å¿ èŠãªããŒãžã§ã³ãæå®ããŸããããšãã°ãAccept: application/vnd.example.api-v1+jsonãããã¯ãä»ã®ã¢ãããŒãããã REST ååã«å³å¯ã«åŸã£ãŠããŸãããã¯ã©ã€ã¢ã³ãã«ãšã£ãŠäœ¿çšããã³è§£éãé¢åã«ãªãå¯èœæ§ããããŸãã
éžæããããŒãžã§ã³ç®¡çæŠç¥ã«é¢ä¿ãªãã倿Žãããå Žåã¯äºåã«ã¯ã©ã€ã¢ã³ãã«éç¥ããæ°ããããŒãžã§ã³ãžã®ç§»è¡ã«é¢ããæç¢ºãªææžãæäŸããããšãéèŠã§ããå€ã API ããŒãžã§ã³ã®ãµããŒã ã¿ã€ã ã©ã€ã³ãå®çŸ©ããæç¢ºãªéæšå¥šããªã·ãŒã確ç«ããã¯ã©ã€ã¢ã³ããææ°ããŒãžã§ã³ã«ã¢ããã°ã¬ãŒãããŠæœåšçãªåé¡ãåé¿ããããšã奚å±ããŸãã
ãã£ãã·ã¥æŠç¥
ãã£ãã·ã¥ã¯ããµãŒããŒã®è² è·ã軜æžãããªã¯ãšã¹ãã®åŸ ã¡æéãççž®ãã垯åå¹ ã®äœ¿çšéãæå°éã«æããŠãRESTful API ã®ããã©ãŒãã³ã¹ãæé©åããããã«äžå¯æ¬ ãªææ³ã§ãã API ã«é©åãªãã£ãã·ã¥ ã¡ã«ããºã ãå®è£ ãããšããŠãŒã¶ãŒ ãšã¯ã¹ããªãšã³ã¹ãšã·ã¹ãã å¹çã®å€§å¹ ãªåäžã«ã€ãªããå¯èœæ§ããããŸãã以äžã«ã䜿çšã§ããäžè¬çãªãã£ãã·ã¥ææ³ãããã€ã瀺ããŸãã
- HTTP ãã£ãã·ã¥:
ETagãLast-ModifiedãCache-Controlãªã©ã®æšæº HTTP ããããŒãå©çšããŠãAPI ã®ãã£ãã·ã¥åäœãå¶åŸ¡ããŸãããããã®ããããŒã¯ããªãœãŒã¹ã®é®®åºŠã«é¢ããæ å ±ãæäŸããæ¡ä»¶ä»ããªã¯ãšã¹ããæå¹ã«ããããšã§ãã¯ã©ã€ã¢ã³ãããã£ãã·ã¥ã管çããã®ã«åœ¹ç«ã¡ãŸãã - ãµãŒããŒåŽã®ãã£ãã·ã¥: é »ç¹ã«ã¢ã¯ã»ã¹ããããªãœãŒã¹ããµãŒããŒåŽã®ã¡ã¢ãªãŸãã¯ä»ã®ãã£ãã·ã¥ ã·ã¹ãã (RedisãMemcached ãªã©) ã«ä¿åããŸããããã«ãããé«äŸ¡ãªããŒã¿ããŒã¹ ã¯ãšãªããªãœãŒã¹ã倧éã«æ¶è²»ããæäœã®å¿ èŠæ§ãå€§å¹ ã«æžããå¿çæéãççž®ãããŸãã
- ã³ã³ãã³ãé ä¿¡ãããã¯ãŒã¯ (CDN): CDN ã¯ãäžçäžã«åæ£ããããšããž ãµãŒããŒäžã«ãªãœãŒã¹è¡šçŸããã£ãã·ã¥ãããã£ãã·ã¥ããããªãœãŒã¹ã®æãè¿ãã³ããŒãã¯ã©ã€ã¢ã³ãã«æäŸããŠãé å»¶ãæå°éã«æããŸãã CDN ã¯ãå°ççã«å€§èŠæš¡ãªãŠãŒã¶ãŒ ããŒã¹ãšå€§éã®ã³ã³ãã³ãé ä¿¡ããŒãºããã API ã«ç¹ã«åœ¹ç«ã¡ãŸãã
- ã¢ããªã±ãŒã·ã§ã³ ã¬ãã«ã®ãã£ãã·ã¥: ã¢ããªã±ãŒã·ã§ã³ ã¬ãã«ã§ã®ãã£ãã·ã¥ã«ãããåé·ãªèšç®ãšã³ã¹ãã®ãããæäœãæå°éã«æããAPI ããã©ãŒãã³ã¹ãããã«æé©åã§ããŸãããã®ææ³ã§ã¯ããã£ãã·ã¥ã®æŽåæ§ãšææ°æ§ãç¶æããããã«ã¢ããªã±ãŒã·ã§ã³å ã«ã«ã¹ã¿ã ããžãã¯ãå¿ èŠã«ãªãå ŽåããããŸãã
广çãªãã£ãã·ã¥æŠç¥ãå®è£ ãããšãREST API ã®ããã©ãŒãã³ã¹ãšã¹ã±ãŒã©ããªãã£ãå€§å¹ ã«åäžãããããšãã§ããŸãã API ã®ç¹å®ã®èŠä»¶ãè©äŸ¡ããŠãããŒãºã«æãé©ããææ³ã決å®ããŸãã
ãšã©ãŒåŠçãšæ€èšŒ
广çãªãšã©ãŒåŠçãšå ¥åæ€èšŒã¯ãREST API ãèšèšããéã®éèŠãªã³ã³ããŒãã³ãã§ãããããã®å®è·µã«ãããéçºè ã®ãšã¯ã¹ããªãšã³ã¹ãåäžããAPI ã®ä¿¡é Œæ§ãšä¿å®æ§ãåäžããŸãã
äžè²«æ§ã®ããæå³ã®ãã HTTP ã¹ããŒã¿ã¹ ã³ãŒã
REST ã®äž»ãªååã® 1 ã€ã¯ãé©å㪠HTTP ã¹ããŒã¿ã¹ ã³ãŒãã䜿çšã㊠API åŒã³åºãã®çµæã瀺ãããšã§ãã API å¿çã«æšæºåããã HTTP ã¹ããŒã¿ã¹ ã³ãŒããæ¡çšãããšãã¯ã©ã€ã¢ã³ãã¯å¿çãã€ããŒããæ·±ãæãäžããããšãªããå¿çã®æ§è³ªãçè§£ãããããªããŸããäžè¬ç㪠HTTP ã¹ããŒã¿ã¹ ã³ãŒãã«ã¯æ¬¡ã®ãã®ããããŸãã
- 200 OK: ãªã¯ãšã¹ããæåããããšã瀺ããŸãã
- 201 Created: æ°ãããªãœãŒã¹ãæ£åžžã«äœæãããããšã瀺ããŸãã
- 204 ã³ã³ãã³ããªã: èŠæ±ãæåããè¿ããã远å ã³ã³ãã³ãããªãããšã瀺ããŸãã
- 400 Bad Request: ã¯ã©ã€ã¢ã³ãããã®äžæ£ãªå ¥åãŸãã¯ç¡å¹ãªå ¥åã瀺ããŸãã
- 401 Unauthorized: èªèšŒè³æ Œæ å ±ãæ¬ èœããŠããããæ£ãããªãããšã瀺ããŸãã
- 403 Forbidden: èŠæ±ããããªãœãŒã¹ãžã®ã¢ã¯ã»ã¹æš©ãäžååã§ããããšã瀺ããŸãã
- 404 Not Found: èŠæ±ããããªãœãŒã¹ãèŠã€ãããªãã£ãããšã瀺ããŸãã
- 500 å éšãµãŒã㌠ãšã©ãŒ: äžè¬çãªãµãŒããŒåŽã®ãšã©ãŒã瀺ããŸãã
説æçãªãšã©ãŒã¡ãã»ãŒãž
éçºè ãåé¡ãçè§£ããŠè§£æ±ºã§ããããã«ããšã©ãŒãçºçãããšãã«èª¬æçãªãšã©ãŒ ã¡ãã»ãŒãžãæäŸããããšãéèŠã§ãããšã©ãŒã®åå ãšãªã£ãŠããç¹å®ã®ãã£ãŒã«ãããšã©ãŒã®çç±ãæšå¥šããã解決çãªã©ã®æ å ±ãå«ããŸããäŸãã°ïŒ
{ "error": { "status": 400, "message": "Invalid email address", "field": "email", "suggestion": "Please provide a valid email address" } }
å ¥åã®æ€èšŒ
API ã¬ãã«ã§å ¥åãæ€èšŒãããšãäžæ£ãªããŒã¿ãã·ã¹ãã ã«å ¥åãããŠäºæããªãåé¡ãçºçããã®ãé²ãããšãã§ããŸãããµãŒããŒåŽæ€èšŒãå®è£ ããŠãã¯ã©ã€ã¢ã³ãããåãåã£ãå ¥åãå¿ èŠãªåºæºãæºãããŠããããšãæ€èšŒããŸããããšãã°ãå¿ é ãã£ãŒã«ããæ¬ èœããŠããªãããããŒã¿åãäºæããã圢åŒãšäžèŽããŠãããã©ããã確èªããŸããæ€èšŒã倱æããå Žåã¯ãé©å㪠HTTP ã¹ããŒã¿ã¹ ã³ãŒããå«ã説æçãªãšã©ãŒ ã¡ãã»ãŒãžãè¿ããŸãã
ã¹ãããã«ãšã¬ãŒãå¶é
ã¹ããããªã³ã°ãšã¬ãŒãå¶éã¯ãæªçšã鲿¢ããé床ã®è² è·ãã API ãä¿è·ããå ¬æ£ãªäœ¿çšãä¿èšŒããããã«äžå¯æ¬ ãªæ¹æ³ã§ãããããã¯ããªãœãŒã¹ã®ä¿åãAPI ã®ããã©ãŒãã³ã¹ãšå®å®æ§ã®åäžãDDoS ãªã©ã®æªæã®ããæ»æããã®ä¿è·ã«åœ¹ç«ã¡ãŸãã
API ã¬ãŒãå¶é
API ã¬ãŒãå¶éã¯ãã¯ã©ã€ã¢ã³ããç¹å®ã®æéæ å ã«å®è¡ã§ãã API ãªã¯ãšã¹ãã®æ°ãå¶éããŸããäžè¬çãªæŠç¥ã«ã¯æ¬¡ã®ãããªãã®ããããŸãã
- åºå®ãŠã£ã³ããŠ: æéãŠã£ã³ããŠå ã§åºå®æ°ã®ãªã¯ãšã¹ããèš±å¯ããŸã (ããšãã°ã1 æéããã 1000 ãªã¯ãšã¹ã)ã
- ã¹ã©ã€ãã£ã³ã° ãŠã£ã³ããŠ: åãªã¯ãšã¹ãã®åŸã«ãŠã£ã³ããŠãç¶ç¶çã«æŽæ°ããããšã§ãé£ç¶çãªæéæ ãå®è£ ããŸããããšãã°ãåŒã³åºãããšã«ãŠã£ã³ããŠãæŽæ°ãã1 æéããã 1000 ä»¶ã®ãªã¯ãšã¹ããå®è¡ããŸãã
- ãã±ãã (ããŒã¯ã³) ããŒã¹: åºå®æ°ã®ããŒã¯ã³ãã¯ã©ã€ã¢ã³ãã«å²ãåœãŠããªã¯ãšã¹ãããšã«æ¶è²»ãããŸããããŒã¯ã³ãäžè¶³ãããšãã¯ã©ã€ã¢ã³ãã¯è¿œå ã®ãªã¯ãšã¹ããè¡ãåã«ãããŒã¯ã³ãè£å ããããŸã§åŸ ã€å¿ èŠããããŸãã
API ã¹ããããªã³ã°
API ã¹ããããªã³ã°ã¯ããªã¯ãšã¹ãã®åŠçé床ãå¶åŸ¡ããŸãããã®ã¢ãããŒãã¯ããªãœãŒã¹ãããå¹ççã«åæ£ããã®ã«åœ¹ç«ã¡ãéèŠãé«ãæéã§ã API ãã¯ã©ã€ã¢ã³ãã«å¿çãç¶ããããšãä¿èšŒããŸããäžè¬çãªã¹ããããªã³ã°ææ³ã«ã¯æ¬¡ã®ãã®ããããŸãã
- åæãªã¯ãšã¹ã: ã¯ã©ã€ã¢ã³ããåæã«é²è¡ã§ãããªã¯ãšã¹ãã®æ°ãå¶éããŸãã
- ãªã¯ãšã¹ãã®åªå é äœä»ã: ã¯ã©ã€ã¢ã³ãã®ã¿ã€ãã䜿çšãã¿ãŒã³ãäŸ¡æ Œã¬ãã«ãªã©ã®èŠçŽ ã«åºã¥ããŠãªã¯ãšã¹ãã«åªå é äœãä»ããŸãã
- é©å¿ã¹ãããã«: çŸåšã®ã·ã¹ãã è² è·ãŸãã¯ããã©ãŒãã³ã¹ã«åºã¥ããŠã¬ãŒãå¶éãåçã«èª¿æŽããŸãã
API ããã¥ã¡ã³ããšã X-RateLimit-* headers ãªã©ã®å¿çã®ããããŒã®äž¡æ¹ã§ãã¬ãŒãå¶éãšã¹ãããã« ããªã·ãŒãã¯ã©ã€ã¢ã³ãã«äŒéããããã«ããŠãã ããã
ææžåãšãã¹ã
æç¢ºãªããã¥ã¡ã³ãã®æäŸãšåŸ¹åºçãªãã¹ãã¯ãéçºè ã®ãšã¯ã¹ããªãšã³ã¹ãš API ã®å°å ¥ã«çŽæ¥åœ±é¿ãäžãããããAPI éçºã®éèŠãªåŽé¢ã§ãã
APIããã¥ã¡ã³ã
API ãææžåãããšãéçºè 㯠API ãçŽ æ©ãæäœããæ¹æ³ãå©çšå¯èœãªendpoints ãå®è¡ã§ãããªã¯ãšã¹ãã®çš®é¡ãçè§£ã§ããããã«ãªããŸãã API ããã¥ã¡ã³ãã«æ¬¡ã®æ å ±ãå«ããããšãæ€èšããŠãã ããã
- èªèšŒãšèªå¯ã®ããã»ã¹
- 䜿çšå¯èœãªendpointsãšãªã¯ãšã¹ããšã¬ã¹ãã³ã¹ã®äŸ
- HTTP ã¡ãœããããã©ã¡ãŒã¿ãããã³äºæãããå¿ç圢åŒ
- ãšã©ãŒã³ãŒããšã¡ãã»ãŒãž
- ã¬ãŒãå¶éãšã¹ããããªã³ã°ã®æ å ±
- API ã®ããŒãžã§ã³ç®¡çã®è©³çް
Swagger (OpenAPI) ã¯ãREST API ãææžåããããã«åºã䜿çšãããŠããæšæºã§ãã API æ§é ãå®çŸ©ããããã® JSON ãŸã㯠YAML ããŒã¹ã®åœ¢åŒãæäŸãããããéçºè ã API ã®æ¢çŽ¢ãšãã¹ãã«äœ¿çšã§ãã察話åããã¥ã¡ã³ããç°¡åã«çæã§ããŸãã
APIãã¹ã
API ããã¹ããããšãAPI ãããŸããŸãªæ¡ä»¶äžã§æ£ããäžè²«ããŠåäœããããšãä¿èšŒãããŸããé©åãªãã¹ãã¯ãã¯ã©ã€ã¢ã³ãã«åœ±é¿ãäžããåã«ããã°ãããã©ãŒãã³ã¹ã®åé¡ãã»ãã¥ãªãã£ã®è匱æ§ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã以äžãå«ã匷åãªãã¹ãæŠç¥ãéçºããŸãã
- åã ã®ã³ã³ããŒãã³ãã®åäœãã¹ã
- ã³ã³ããŒãã³ããšå€éšã·ã¹ãã éã®çžäºäœçšãæ€èšŒããããã®çµ±åãã¹ã
- è² è·ãã¹ãã§é«è² è·æã®ããã©ãŒãã³ã¹ã枬å®ããããã«ããã¯ãç¹å®ãã
- æœåšçãªè匱æ§ãçºèŠããããŒã¿ä¿è·ã確ä¿ããããã®ã»ãã¥ãªã㣠ãã¹ã
PostmanãSoapUIãJUnit ãªã©ã®ãã¹ã ããŒã«ã䜿çšãããšãAPI ãã¹ãã®äœæãå®è¡ãèªååã®ããã»ã¹ãç°¡çŽ åã§ããŸãã AppMaster ã®ãããªãã©ãããã©ãŒã ã䜿çšãããšãREST API ã®éçºãšãã¹ããå€§å¹ ã«ã¹ããŒãã¢ããã§ããŸãããã® ããŒã³ãŒã ãã©ãããã©ãŒã ã«ãããSwagger ããã¥ã¡ã³ããããŒã¿ããŒã¹ ã¹ããŒãç§»è¡ãªã©ã®ã¿ã¹ã¯ãèªååããªãããããŒã¿ ã¢ãã«ãããžãã¹ ããã»ã¹ã endpointsèŠèŠçã«èšèšã§ããŸããããã«ãããæè¡çè² åµãæé€ãããã¢ããªã±ãŒã·ã§ã³ãããè¿ éã«çæãããéçºã³ã¹ããåæžãããã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãŠã®ããŒãºã«å¯Ÿå¿ã§ããã¹ã±ãŒã©ãã«ã§ä¿å®å¯èœãª API ãœãªã¥ãŒã·ã§ã³ãä¿èšŒãããŸãã
REST APIéçºã®ããã®AppMasterã®äœ¿çš
REST API ã®éçºã¯ãç¹ã«èšèšãæ¡åŒµæ§ãä¿å®æ§ã®ãã¹ã ãã©ã¯ãã£ã¹ãèæ ®ããå Žåãå°é£ã§è€éãªããã»ã¹ã«ãªãå¯èœæ§ããããŸãã AppMasterã®ãããªåŒ·åãªno-codeãã©ãããã©ãŒã ãå©çšãããšãAPI éçºããã»ã¹ãå€§å¹ ã«åçåããã¹ã±ãŒã©ãã«ã§ä¿å®æ§ã®é«ãå®å šãª API ã確å®ã«äœæã§ããŸãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯AppMasterã©ã®ããã«ã㊠REST API éçºãå éããæè¡çè² åµãæé€ããããã³ã¹ãå¹çã®é«ããœãªã¥ãŒã·ã§ã³ãäžå°äŒæ¥ãå€§äŒæ¥ã«æäŸã§ããããæ€èšããŸãã
ããŒã¿ã¢ãã«ãããžãã¹ããã»ã¹ããšã³ããã€ã³ãã®ããžã¥ã¢ã«ãã¶ã€ã³
REST API éçºã§AppMasterã䜿çšããäž»ãªå©ç¹ã® 1 ã€ã¯ãããžã¥ã¢ã« ãã¶ã€ã³æ©èœã§ãã AppMaster䜿çšãããšã䜿ããããããžã¥ã¢ã«ãª BP Designer ãéããŠã ããŒã¿ ã¢ãã«(ããŒã¿ããŒã¹ ã¹ããŒã) ãšããžãã¹ ããžã㯠(ããžãã¹ ããã»ã¹çµç±) ãäœæã§ããŸãããã®ããã»ã¹ã«ãããREST API ã®åŒ·åºãªåºç€ã確ä¿ãããè€éãªããžãã¯ãšããŸããŸãªãªãœãŒã¹éã®é¢ä¿ã®éçºãšçµ±åãç°¡çŽ åãããŸãã
ããã«ã AppMasterããžã¥ã¢ã«ãªãšã³ããã€ã³ã ãã¶ã€ããŒã䜿çšã㊠REST API ããã³ WSS endpointsãå®çŸ©ããã³æ§æã§ããŸããããã«ããã endpointsã®èšèšããã¹ããæŽæ°ã®ã¿ã¹ã¯ãç°¡çŽ åãããAPI ããã¹ã ãã©ã¯ãã£ã¹ã«åŸããã¹ã±ãŒã©ããªãã£ãšä¿å®æ§ãç¶æã§ããããã«ãªããŸãã
èªååãããã³ãŒãçæãšãããã€ã¡ã³ã
REST API éçºã«é¢ããŠã¯ãå¹ççã§ä¿å®å¯èœã§ä¿¡é Œæ§ã®é«ãã³ãŒãçæãæåã«äžå¯æ¬ ã§ãã AppMaster [å ¬é] ãã¿ã³ãæŒãããšãã«ã¢ããªã±ãŒã·ã§ã³ã®ãœãŒã¹ ã³ãŒããèªåçã«çæããããšã§ããã®èª²é¡ã«å¯ŸåŠããŸããããã«ã¯ã Go (golang) ã§äœæãããããã¯ãšã³ã ã¢ããªã±ãŒã·ã§ã³ã Vue3 ãã¬ãŒã ã¯ãŒã¯ãš JS/TS ã䜿çšãã Web ã¢ããªã±ãŒã·ã§ã³ãAndroid ã®å Žå㯠Kotlin ãšJetpack Compose ãiOS ã®å Žåã¯SwiftUIã«åºã¥ãã¢ãã€ã« ã¢ããªã±ãŒã·ã§ã³ãå«ãŸããŸãã
ãã®çµæãéçºããã»ã¹ãåçåãããæéãç¯çŽãããå®è£ äžã®ãšã©ãŒã®ãªã¹ã¯ã軜æžãããŸãã
Swagger ããã¥ã¡ã³ããšããŒã¿ããŒã¹ ã¹ããŒãã®ç§»è¡
äžè²«æ§ã®ããããããããããã¥ã¡ã³ãã¯ãã¯ã©ã€ã¢ã³ãã« API ã®äœ¿ç𿹿³ãš API ããäœãæåŸ ã§ããããæç¢ºã«çè§£ããããããREST API éçºã§ã¯äžå¯æ¬ ã§ãã AppMasterãµãŒããŒendpointsçšã® Swagger (Open API) ããã¥ã¡ã³ããèªåçã«çæããããšã§ãããåŠçããŸããããã«ãããAPI ãšã¯ã©ã€ã¢ã³ãéã®æç¢ºãªéä¿¡ãã£ãã«ã確ä¿ãããçµ±åã®åé¡ã®ãªã¹ã¯ã軜æžãããAPI ã®å°å ¥ã容æã«ãªããŸãã
ããã«ã AppMasterããŒã¿ããŒã¹ ã¹ããŒãç§»è¡ã¿ã¹ã¯ã管çãããããéçºã®ããŸããŸãªæ®µéã«ããã£ãŠäžè²«ããããŒã¿ããŒã¹æ§é ãç¶æããããŒã¿ããŒã¹å€æŽã®ã¹ã ãŒãºãªå±éãšçµ±åãä¿èšŒã§ããŸãã
ã¹ã±ãŒã©ããªãã£ãšãšã³ã¿ãŒãã©ã€ãºã¬ãã«ã®æ©èœ
ã¹ã±ãŒã©ãã«ã§ä¿¡é Œæ§ã®é«ã REST API ãäœæããããšã¯ãéçºããã»ã¹ã®éèŠãªåŽé¢ã§ãã AppMasteré«ãã©ãã£ãã¯ã®ãšã³ã¿ãŒãã©ã€ãºã¬ãã«ã®ãŠãŒã¹ã±ãŒã¹ã«åªããããã©ãŒãã³ã¹ãšã¹ã±ãŒã©ããªãã£ãå®èšŒãããã³ã³ãã€ã«ãããã¹ããŒãã¬ã¹ ããã¯ãšã³ã ã¢ããªã±ãŒã·ã§ã³ãæäŸããããšã§ããã®åéã§åªããŠããŸããã€ãŸããAPI ã¯äžå°äŒæ¥ããå€§äŒæ¥ãŸã§ãããŸããŸãªèŠæš¡ã®ãããžã§ã¯ãã§äœ¿çšã§ããäžè²«ããä¿¡é Œæ§ã®é«ã API ãšã¯ã¹ããªãšã³ã¹ãä¿èšŒãããŸãã
çµè«
REST API éçºã®ããã®ãã³ã¹ãå¹çãé«ããã¹ã±ãŒã©ãã«ã§ãä¿å®å¯èœãªãœãªã¥ãŒã·ã§ã³ããæ¢ãã®å Žåã¯ã AppMaster以å€ã«æ¢ãå¿ èŠã¯ãããŸããã AppMasterã¯ãããžã¥ã¢ã« ãã¶ã€ã³æ©èœãèªåã³ãŒãçæã匷åãªæ©èœã«ãããAPI éçºããã»ã¹ãç°¡çŽ åããREST API ãæé©ãªã¹ã±ãŒã©ããªãã£ãä¿å®æ§ãã»ãã¥ãªã㣠ãã©ã¯ãã£ã¹ã«åŸã£ãŠããããšãä¿èšŒããŸãã
AppMasterã®no-codeãã©ãããã©ãŒã ã®åãæŽ»çšããããšã§ãããå°ãªãæéãšå°ãªããªãœãŒã¹ã§ããåªãã API ãäœæã§ãã仿¥ã®é²åãç¶ãããã¯ãããžãŒæ¥çã§ç«¶äºåãé«ããããšãã§ããŸããä»ãã AppMaster ã ç¡æã§è©ŠããŠããã®éãããèªèº«ã®ç®ã§ç¢ºèªããŠãã ããã
ãããã質å
REST API ã®ãã¹ã ãã©ã¯ãã£ã¹ã¯ãéçºè ã Representational State Transfer (REST) ã®ååã«åŸã£ãŠå¹æçãã€å¹çç㪠API ãèšèšãæ§ç¯ãç¶æããã®ã«åœ¹ç«ã€äžé£ã®ã¬ã€ãã©ã€ã³ãšååã§ãããããã®ãã©ã¯ãã£ã¹ã«ãããAPI ã®æé©ãªéä¿¡ãã¹ã±ãŒã©ããªãã£ãã»ãã¥ãªãã£ãä¿å®æ§ãä¿èšŒãããŸãã
REST API ã®ãã¹ã ãã©ã¯ãã£ã¹ã«ãããAPI ãæšæºåãããäžè²«ããæ¹æ³ã§èšèšãããããšãä¿èšŒãããçžäºéçšæ§ã®åäžããŠãŒã¶ãŒ ãšã¯ã¹ããªãšã³ã¹ã®åŒ·åãããã³ããŸããŸãªã¢ããªã±ãŒã·ã§ã³ãã·ã¹ãã éã®çµ±åã®å®¹æåã«ã€ãªãããŸãã
REST API èšèšã®äž»ãªååã«ã¯ãæç¢ºã§æå³ã®ãã URI æ§é ã®äœ¿çšãé©å㪠HTTP ã¡ãœãã (GETãPOSTãPUTãDELETE) ã®å©çšããªãœãŒã¹è¡šçŸã®åªå é äœä»ããã¹ããŒãã¬ã¹æ§ãããã³ HATEOAS (ã¢ããªã±ãŒã·ã§ã³ç¶æ ã®ãšã³ãžã³ãšããŠã®ãã€ããŒããã¹ã) ãå«ãŸããŸãã
æç¢ºãª URI æ§é ã«ãããAPI ã®èªã¿ããããšçè§£ãããããåäžããŸãããããã¯ã¢ã¯ã»ã¹ãããŠãããªãœãŒã¹ãåæ ããäžå¿ èŠãªè€éããææ§ããé¿ããå¿ èŠããããŸãã
é©å㪠HTTP ã¡ãœããã䜿çšãããšãAPI ãæå³ããã¢ã¯ã·ã§ã³ã«ç¢ºå®ã«åŸãããã«ãªããŸããããšãã°ãããŒã¿ã®ååŸã«ã¯ GETãäœæã«ã¯ POSTãæŽæ°ã«ã¯ PUTããªãœãŒã¹ã®åé€ã«ã¯ DELETE ã䜿çšããŸãã
ãªãœãŒã¹è¡šçŸã¯ãAPI å¿çã§ããŒã¿ãã©ã®ããã«æ§é åããããã©ãŒããããããããæ±ºå®ããŸããé©åã«èšèšããã衚çŸã«ãããããŒã¿äº€æå¹çãåäžããäžå¿ èŠãªããŒã¿è»¢éãåæžãããŸãã
ã¹ããŒãã¬ã¹ã«ããã¢ãŒããã¯ãã£ãç°¡çŽ åãããå API ãªã¯ãšã¹ããç¬ç«ããŠåŠçã§ããããã«ãªããŸããããã«ãããä¿¡é Œæ§ãæ¡åŒµæ§ããã£ãã·ã¥ã®å¯èœæ§ãåäžããŸãã
ã¯ãã AppMasterã®ãããªno-codeãã©ãããã©ãŒã ã䜿çšãããšãéçºè ã¯ãã¹ã ãã©ã¯ãã£ã¹ãéµå®ããªãã REST API ãèšèšããã³å®è£ ã§ããŸãããããã®ãã©ãããã©ãŒã ã¯ã endpointsã®å®çŸ©ããªãœãŒã¹ã®ç®¡çãHTTP ã¡ãœããã®åŠçãããã³é©åãªã»ãã¥ãªãã£ã®ç¢ºä¿ãè¡ãããã®ããŒã«ãæäŸããåŸæ¥ã®ã³ãŒãã£ã³ã° ã¹ãã«ããªããŠãå¹çç㪠API äœæãå¯èœã«ããŸãã


