REST API ãã¬ã¼ã ã¯ã¼ã¯ Connexion ã®ã¹ã¹ã¡ã¨ãã®ä½ä¾
Python ã® Connexion ã¨ãããã¬ã¼ã ã¯ã¼ã¯ã¨ãã®ãµã³ãã«ã¢ããªã±ã¼ã·ã§ã³ãæ¸ããã®ã§ãã®ç´¹ä»ã§ãã
Connexion ã¯ãAPI (spec) Firstãã謳ããã¬ã¼ã ã¯ã¼ã¯ã§ãã
ãAPI Firstãã¨ã¯ã ãåã The Twelve-Factor App ã®è¿½è£ã¨ã㦠2016 å¹´ã« Pivotal 社ãæå±ããã¬ã¤ãã©ã¤ã³ Beyond the Twelve-Factor App ã®ä¸ã®ã²ã¨ã¤ã§ãã
ç°¡åã«ããã¨ãã³ã¼ããæ¸ãå§ããåã«ã¾ãAPIã®ä»æ§ãå®ããããã¨ãã°æ¨ä»ã®ãã«ãããã¤ã¹å¯¾å¿ã®ãããªè¤æ°ãã¼ã ã§éçºãé²ãããããªç¾å ´ã§ããäºããã®API仿§ãæ ãæã¨ãããã¨ã§ã仿¹ã®éçºããã»ã¹ã«å¹²æ¸ãããã¨ãªããåæ»ã«éçºãé²ãããã¨ãã§ãããã¨ãããã®ã§ãã ï¼ãã¶ãï¼
Connexion ã¯ãã® API First ãå®è·µããã®ãå©ãã¦ããããããã¯ãã§ãOpenAPI ï¼éå»ã« Swagger spec ã¨å¼ã°ãã¦ãããã®ã§ãï¼ã§è¨è¿°ãã仿§ã軸ã¨ãã¦æ¬¡ã®ãã¨ãå®ç¾ã§ãã¾ãã
- API å©ç¨è åãã®ããã¥ã¡ã³ããçæã§ãã
- 仿§ã«è¨è¿°ããå ¥åãã©ã¡ã¼ã¿ã® validation ã«ã¼ã«ï¼å¿ é ãã©ã¡ã¼ã¿ã®ãã/ãªãã¨ããæ£è¦è¡¨ç¾ã§è¨è¿°ããå¤ã®å½¢å¼ãã§ãã¯ã¨ãï¼ãèªåã§å®æ½ãã¦ãããã®ã§ãé©ç¨ã³ã¼ããä¸åæ¸ãå¿ è¦ããªã
ç¾è·ã§ API ãµã¼ãã¼ã 3 ã¤å®è£ ãã¦ãä»ã¯ Connexion ã§ 4 ã¤ããå®è£ ãã¦ããã®ã§ãããããã¥ã¡ã³ãã¨å®è£ ã®ä¹é¢ã¯é ã®çãåé¡ã§ãããå ·ä½çã«ããã¨ãå¤ã®å½¢å¼ãã§ãã¯ã®ã«ã¼ã«ãã¡ãã£ã¨å¤ãããã ãã©ããã¥ã¡ã³ãã«åæ ããããã¦ããã¨ããåæã«æ¸ããããã¥ã¡ã³ãã®ä¸é¨ãå®è£ ããæ¼ãã¦ããã¨ããã¿ãªããã容æã«æ³åã§ããããããªãã§ããããã
ã¾ããã¨ã³ããã¤ã³ãã®æ å ±ï¼HTTPã®ã¡ã½ããã¨ãã¹ï¼ãããã¥ã¡ã³ã㨠controller ãå¼ã¶ router ã®ä¸¡æ¹ã«æ¸ããªãã¨ãããªãã®ã常ã ç¡é§ã ã¨æã£ã¦ããã®ã§ãããConnexion ã仿§ãèªãã§æå®ã® controller ã®ã¡ã½ãããå¼ãã§ãããã®ã§ router ãè¨è¿°ããå¿ è¦ããªããªã£ãã®ãããç¹ã®1ã¤ã§ãã
Connexion ã使ããã¨ã§ãããã£ãåé¡ããè§£æ¾ãããã®ã§æ¬å½ã«å©ãã£ã¦ãã¾ãã
ã»ãã«ã API ã®åä½ãã¡ãã£ã¨è©¦ããããã¢ããã®ã«ä¾¿å©ãª Web UI ã®ããã·ã¥ãã¼ããã¤ãã¦ããããOAuth 2 ã®ãã¼ã¯ã³ãã¼ã¹ã®èªè¨¼ã«å¯¾å¿ãã¦ãããã¨ããããã¨ç¹å¾´ãããã®ã§è©³ãã㯠Connexion ã®ãµã¤ããã¿ã¦ã¿ã¦ãã ããã
ãããªãããªã§ãããã°ãã Connexion ã®è©¦ãæ¸ãããã¦ãã¾ããã
ãªã©ã®ãµã³ãã«å®è£ ã大ãã«åèã«ããã¦ããã£ãã®ã§ãããããã¡ãã£ã¨å®è·µçãªä½ä¾ãæ¸ãã¦ã¿ã¾ããã
- ãã¼ã¿ã¹ãã¢ã¯ RDBMS ã§ã SQLAlchemy ORM ã® declarative mapping ã使ç¨
- Connexion ï¼ã®å é¨ã® Flask ï¼ã¨ã®é£æºã¯ Flask-Alchemy ã使ç¨
- ORM ã®ã·ãªã¢ã©ã¤ãºï¼dictåï¼ã«ã¯ sqlathanor ã使ç¨
- ãµã³ãã«ã¨ã㦠2 ã¤ã®ãã¼ãã«ï¼ãªã½ã¼ã¹ï¼ãå®ç¾©ãã¦ãone-to-many ã®ãªã¬ã¼ã·ã§ã³
- æ¤ç´¢æ¡ä»¶ã®å¦çã¯ãæå®ã® SQL ã£ã½ãè¨æ³ï¼JSONï¼ã§ãªã¯ã¨ã¹ããããã¨ãããæãã« SQLAlchemy ã® query ãªãã¸ã§ã¯ããè¿ãã¦ãããç°¡æ query builder ãæ¸ãã
- pytest 㨠WebTest ã使ã£ã¦ãã¹ããç¨æãã
ã¾ã ã¾ã Python 㯠B- ãããã¦ããã¨ã®ä¸ã« SQLAlchemy ãªã©ã使ã£ããã¨ããªãã£ãã®ã§ããããæ¸ããã»ããããã§ãï¼ãã¨ããã£ãããã² ãã«ãª ãå¾ ã¡ãã¦ãã¾ãï¼