Impress Application Server ïŒIASïŒã¯ãããŒãã®äžã§ã®éçºã®äž»æµã§ã¯ãªããããŸããŸãªç¹°ãè¿ãããå žåçãªã¿ã¹ã¯ãåçŽåããã³èªååããã¢ããªã±ãŒã·ã§ã³ã³ãŒãã®æœè±¡åã¬ãã«ãäžããã¢ããªã±ãŒã·ã§ã³ã®ãã¬ãŒã ã¯ãŒã¯ãšæ§é ãèšå®ããããã«èšèšãããã代æ¿ã¢ãŒããã¯ãã£ãšå²åŠãæã€Node.jsã®ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã§ãã³ãŒãã®ããã©ãŒãã³ã¹ãšéçºè ã®çç£æ§ã®äž¡æ¹ãæé©åããŸãã IASã¯çŸåšããµãŒããŒã¿ã¹ã¯ã®ã¿ã察象ãšããŠããŸãããå æ¬çãªæ¹æ³ã§ãããè¡ããŸããããšãã°ã1ã€ã®ããŒãã§APIãWebãœã±ãããã¹ããªãŒãã³ã°ãéçããµãŒããŒéä¿¡ã€ãã³ãããããã·ããã³URLæžãæããçµã¿åãããè€æ°ã®ãã¡ã€ã³ãšè€æ°ã®ã¢ããªã±ãŒã·ã§ã³ã1ã€ã®ããã«æäŸã§ããŸããµãŒããŒãããã³å šäœãšããŠ1ã€ã®ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãšããŠåäœãããµãŒããŒã®ã°ã«ãŒãã
ã¯ããã«
ãŸããnode.jsã®äžè¬ã«åãå ¥ããããŠããã¢ãããŒãã§ãã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã®éçºãéå§ããããã«ä¿ãããããã€ãã®åé¡ããªã¹ãããŸãã
- å€ãã®å Žåãã¢ããªã±ãŒã·ã§ã³ã³ãŒãã¯ã·ã¹ãã ã³ãŒããšæ··åšããŠããŸãã å®éãããŒããšæŽŸçãã¬ãŒã ã¯ãŒã¯ã®ã»ãšãã©ã¯äœã¬ãã«ã§ãããåã¢ããªã±ãŒã·ã§ã³ã«ã¯ãµããžã§ã¯ãé åã®ã¿ã¹ã¯ã«é¢é£ããªãã·ã¹ãã ã³ãŒãã®äžéšãå¿ ãå«ãŸããŠããŸãã ãã®ãããããšãã°ãHTTPããããŒãè¿œå ãããšPatientã¯ã©ã¹ã®ã¡ãœããã«ãªãããã®æ£è ã«URLãã«ãŒãã£ã³ã°ããWebãœã±ãããä»ããŠã€ãã³ããéä¿¡ããã¿ã¹ã¯ãšåããã¡ã€ã«ã«å«ãŸããŸãã ããã¯æªããã§ãã
- éç°ã¯ãã¢ããªã±ãŒã·ã§ã³ã¢ãŒããã¯ãã£ã®é¢ã§é床ã®èªç±ãäžããŠããŸãã ããªããåæããªããã°ãªããªãããã«ãŠã§ã¢ã®æŠå¿µã«å ããŠãå®å šãªéçºã«ã¯ååã§ã¯ãããŸãããäžè¬çãªã¢ãŒããã¯ãã£ãã¿ãŒã³ã¯ãããŸããã ãããžã§ã¯ãã®ãã¡ã€ã«ãžã®åå²ãããžãã¯ã®ã¯ã©ã¹ãžã®åå²ããã¿ãŒã³ã®é©çšãã¢ããªã±ãŒã·ã§ã³ã§ã®å éšAPIã®äœæãã¬ã€ã€ãŒã®å²ãåœãŠãããã«ã¯ãã£ã¬ã¯ããªæ§é ããããéçºè ã®è£éã«ä»»ãããŠããŸãã ãã®çµæããããžã§ã¯ãã®æ§é ãšã¢ãŒããã¯ãã£ã¯ããŒã ãå°é家ã«ãã£ãŠå€§ããç°ãªããããã³ãŒãã®ç解ãšãããã³ã°ãè€éã«ãªããŸãã
- ããŒãã®äžçã§ã¯ãRESTã®çä¿¡çãªåŽæãããããã®çµæããµãŒããŒã¡ã¢ãªã«ç¶æ ãä¿åããããšãæåŠããŸãã ããã¯ãNode.jsã¢ããªã±ãŒã·ã§ã³ãã¡ã¢ãªå ã«é·æéååšãããšããäºå®ã«ããããããã§ãïŒã€ãŸãããã¹ãŠã®ãªã¯ãšã¹ãã§ããŒããããããªã¯ãšã¹ãéã§çµäºããŸããïŒã åé¡ã®ã¢ãã«ãé·æã«ããã£ãŠå±éããèœåãç¡èŠãã匱ãã¡ã¢ãªäœ¿çšéïŒI / Oãæå°éã«æããããšãã§ãããããã§ïŒã¯ããã©ãŒãã³ã¹ã«å¯Ÿããç¯çœªã§ãã
- npmã®å€æ°ã®ã¢ãžã¥ãŒã«ã¯ã¬ããŒãžã¢ãžã¥ãŒã«ã§ã ãããã€ãã®åªããã¢ãžã¥ãŒã«ã®äžãããé©åãªã¢ãžã¥ãŒã« ãèŠã€ããã®ã¯ç°¡åã§ã¯ãããŸããïŒããŠã³ããŒãæ°ãšã¹ã¿ãŒæ°ã¯ãã³ãŒãã®å質ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®é床ãåžžã«é©åã«åæ ãããšã¯éããŸããïŒã åªãããéåžžã«åªããã¢ãžã¥ãŒã«ã®ã»ããããå®å šãªã¢ããªã±ãŒã·ã§ã³ãäœæããããšã¯ããã«å°é£ã§ãã äžç·ã«ã圌ãã¯äžå®å®ã§äºæž¬ã§ããªãæ¯ãèããããããšãã§ããŸãã ã¢ãžã¥ãŒã«ã¯çžäºã«ååã«ã·ãŒã«ããããŠããªããããçµ±åã®ç«¶åãæé€ã§ããŸããïŒããšãã°ãäžéšã®ã¢ãžã¥ãŒã«ã¯res.endããªãŒããŒã©ã€ãããããhttpããããŒãéä¿¡ããããä»ã®ã¢ãžã¥ãŒã«ã¯ãã®åäœãäºæããŠããŸããïŒã
ãŸã å€ãã®å°ããªåé¡ããããNode.jsã®ãã£ãããšã©ãŒã«äŒŽãæ·±ãæ²ãã¿ã¯ãæ¶ãè¡ãã³ãŒããŒïŒè¶ïŒã§æºãããã3ã€ã®ããªã¥ãŒã ã®ãããã¯ã§ãã äžèšã®ãã¹ãŠã®çµæãšããŠãããŒãã¯äŸç¶ãšããŠæžå¿µã®åå ã§ãããã»ãšãã©ã®å Žåãä»ã®ãµãŒããŒãã¯ãããžãŒãšçµã¿åãããŠè¿œå ããŒã«ãšããŠäœ¿çšãããã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã®ã¢ã»ã³ããªã®ã¹ã¯ãªããäœæããããã¿ã€ãã³ã°ããŸãã¯Webãœã±ããã§ã®éç¥ã®é ä¿¡ãªã©ã®è£å©äœæ¥ãå®è¡ããŸãã éåžžã«ãŸãã«ããµãŒããŒéšåãããŒãäžã«ã®ã¿ãã倧èŠæš¡ãªãããžã§ã¯ãã«äŒãããšãã§ããŸãã
åé¡ã®å£°æ
ãã¬ãã£ããªåæ©ä»ãïŒãªã¹ããããŠããåé¡ïŒã«å ããŠãIASã®éçºã«å¯Ÿããããžãã£ããªåæ©ä»ãèŠå ïŒã¢ã€ãã¢ãšã¿ã¹ã¯ïŒããããŸããã
- ãããããç¬èªã®ã¯ã©ã¹ã¿ãŒïŒIPCããã»ã¹ééä¿¡ã«é¢é£ä»ããããããã»ã¹ã®ã¯ã©ã¹ã¿ãŒïŒãæã€è€æ°ã®ãµãŒããŒäžã®node.jsã¢ããªã±ãŒã·ã§ã³ã®ã¹ã±ãŒãªã³ã° ã
- è€æ°ã®ã¢ããªã±ãŒã·ã§ã³ãåäžã®ããã»ã¹ã®äžéšãšããŠããŸãã¯ããã»ã¹ã®ã¯ã©ã¹ã¿ãŒããŸãã¯ããããã«ããã»ã¹ã®ã¯ã©ã¹ã¿ãŒãæã€ãµãŒããŒãã¡ãŒã ãšããŠæäŸããã
- ãã¡ã€ã«ã·ã¹ãã ãç£èŠããããšã«ãããã¢ããªã±ãŒã·ã§ã³ãåèµ·åããªããŠãããã£ã¹ã¯äžã§ã³ãŒããå€æŽãããå Žåãã¡ã¢ãªå ã®ã³ãŒããèªåçã«çœ®ãæããŸã ã ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠããŒãããããã¡ã€ã«ãå€æŽããããšããã«ãIASã¯ããããã¡ã¢ãªã«èªã¿èŸŒã¿ãŸãã ã¡ã¢ãªå ã®ããæç¹ã§ã³ãŒãã®ããã€ãã®ããŒãžã§ã³ããããå€æŽåã®ãã¹ãŠã®ãªã¯ãšã¹ãã®åŠçãå®äºãããšããã«å€ãããŒãžã§ã³ãã¢ã³ããŒããããæ°ãããªã¯ãšã¹ãã¯æ¬¡ã®ãªã¯ãšã¹ãã«ãã§ã«äœ¿çšãããŠããŸãã
- ããã»ã¹éã®ã¡ã¢ãªå ã®ããŒã¿æ§é ã®åæ ã ãã¡ããããã¹ãŠã®ã¡ã¢ãªæ§é ã§ã¯ãªããããã«å±éããããã¡ã€ã³ã¢ãã«ã®ã°ããŒãã«ãã©ã°ã¡ã³ãã®ã¿ã§ãã è¿œå ã®å€æŽãšãã©ã³ã¶ã¯ã·ã§ã³ããµããŒããããŠããŸãã ããã€ãã®ãã©ã¡ãŒã¿ãç°ãªãããã»ã¹ã§äžŠè¡ããŠå¢å ããå Žåãé åºã¯éèŠã§ã¯ãªãããããããã®å€æŽã¯ããŒãžãããŸãã
æåã®å²åŠ
- æ倧ã¡ã¢ãªäœ¿çšé ã éåæI / Oããé«éãªã®ã¯ãI / OããŸã£ãããªãå ŽåããŸãã¯èŠæ±ãçºçããŠããªããšãã«æå°éã«æããããã¬ã€ãžãŒã¢ãŒãã§å®è¡ãããå Žåã®ã¿ã§ãã
- ã¢ããªã·ãã¯ã¢ãŒããã¯ãã£ãšé«ãã³ãŒãçµåæ§ããã¹ãŠã®ã³ã¢ã¢ãžã¥ãŒã«ã¯çµ±åã調æŽãæé©åãããŠé£æºããŠåäœããŸãã ããã«ãããäžå¿ èŠãªãã§ãã¯ã¯ãªããå žåçãªåé¡ã解決ããéã®åäœã¯åžžã«äºæž¬å¯èœã§ãã
- ããŒãããã¹ããIPããããã³ã«ããµãŒããŒãããã»ã¹ãã¢ããªã±ãŒã·ã§ã³ãããã»ããµãŒãã¡ãœããã®ãã«ããã¬ã¯ãµ ã ãããã£ãŠã1ã€ã®ããŒãã§éçãAPIãWebãœã±ãããSSEãã¹ããªãŒãã³ã°ãããªã倧ããªãã¡ã€ã«ãçµã¿åãããããç°ãªããã¡ã€ã³ããã«ããã¡ã€ã³ãµã€ãã§è€æ°ã®ã¢ããªã±ãŒã·ã§ã³ãåŠçãããã§ããŸãã
- ãµã³ãããã¯ã¹ã䜿çšããŠç°å¢ããéé¢ãããä»®æ³ãã·ã³ãé©çšããåçã åã¢ããªã±ãŒã·ã§ã³ã«ã¯ãã©ã€ãã©ãªãšããŒã¿ãããŒããããç¬èªã®ã³ã³ããã¹ãïŒã¹ã³ãŒãïŒããããŸãã ã¢ããªã±ãŒã·ã§ã³ã¯ãåæåãšãã¡ã€ãã©ã€ãºãããŒã¿ã¢ãã«ãšããŒã¿ããŒã¹æ§é ãæ§æãšã€ã³ã¹ããŒã«ïŒæåã®éå§ïŒãæŽæ°ã移è¡ãªã©ãããããçš®é¡ã®ãã³ãã©ãŒã®ã¢ãŒããã¯ãã£äžã®å ŽæãæäŸããŸãã
- ã¢ããªã±ãŒã·ã§ã³ãšã·ã¹ãã ã³ãŒãã®åé¢ã äžè¬ã«ãã¢ããªã±ãŒã·ã§ã³å ã®æœè±¡åã¬ã€ã€ãŒïŒé«ã¬ãã«ãšäœã¬ãã«ïŒãåé¢ããããšã¯ãåãæœè±¡ã¬ã€ã€ãŒå ã®ã¢ãã«ãšãã¥ãŒã§ããžãã¯ãå ±æãããããã¯ããã«éèŠã§ãïŒããããæ··åšããããšããã«å¹ççã§ãïŒã
- ãã£ã¬ã¯ããªããªãŒã§ã®ç¶æ¿ãšåå®çŸ©ã䜿çšããURLã®ãã¡ã€ã«ã·ã¹ãã ãžã®ãããã³ã° ã ãã ãããã£ã¬ã¯ããªæ§é ã«ããèªåã«ãŒãã£ã³ã°ã«å ããŠãããã»ããµãã¡ã¢ãªã«ããã°ã©ã ã§çŽæ¥è¿œå ããæåã§ã«ãŒãã£ã³ã°ãèŠå®ããæ©èœããããŸãã
- ã³ãŒãã®ç°¡æœã ïŒä»¥äžã®äŸãåç §ïŒã¯ãã»ãšãã©ã®å Žåã«å¿ èŠãªãã¹ãŠãåŠçããéçºæžã¿ã®çµã¿èŸŒã¿APIã®ãããã§å®çŸããããããžã§ã¯ãéã§æ¡åŒµããã³åå©çšã§ããŸãã ãŸããå¯èŠæ§ãŸãŒã³ãæäœããç¹å¥ãªã¹ã¿ã€ã«ãšã䟿å©ãªãµã€ãºã®è«çéšåãæã€ãã¡ã€ã«ã«åå²ããã³ãŒãã«ãããç°¡æœããä¿é²ãããŸãã
å¿çšåé
IASã¯ãããã€ãã®çš®é¡ã®ã¢ããªã±ãŒã·ã§ã³ãäœæããããã«èšèšãããŠããŸãã
- ãµãŒããŒããåèµ·åããã«ã¯ã©ã€ã¢ã³ãäžã§APIãšåçããŒãžå€æŽãè¡ã1ããŒãžã®Webã¢ããªã±ãŒã·ã§ã³ã
- APIãä»ããŠããŒãžã«ããçšåºŠã®ãã€ããã¯ã¹ãåãããã«ãããŒãžWebã¢ããªã±ãŒã·ã§ã³ïŒããžãã¯ã¯ã¯ã©ã€ã¢ã³ããšãµãŒããŒã«åå²ãããŸãïŒã
- åã€ãã³ãã§ããŒãžããªããŒããããã«ãããŒãžã¢ããªã±ãŒã·ã§ã³ïŒãµãŒããŒäžã®ãã¹ãŠã®ããžãã¯ïŒã
- åæ¹åã®ããŒã¿äº€æãŸãã¯ãµãŒããŒããã®ã€ãã³ãã®ã¹ããªãŒã ã䌎ãã¢ããªã±ãŒã·ã§ã³ã察話åã¢ããªã±ãŒã·ã§ã³ïŒéåžžãããã¯ãªãã·ã§ã³1ããã³2ã®ã¢ããªã³ã§ãïŒã
- ãã€ãã£ãã¢ãã€ã«ããã³ãŠã£ã³ããŠã¢ããªã±ãŒã·ã§ã³ã®ãµãŒããŒã¢ã¯ã»ã¹çšã®ãããã¯ãŒã¯APIã
ãµããŒããããŠããè€æ°ã®APIäœæã¡ãœãã
- RPC API-URLãäžé£ã®ãã©ã¡ãŒã¿ãŒã§ãããã¯ãŒã¯ã¡ãœãããèå¥ããå ŽåãåŒã³åºãã®é åºã¯éèŠã§ãããåŒã³åºãéã®ç¶æ ã¯ã¯ã©ã€ã¢ã³ããšãµãŒããŒã®äž¡æ¹ã«ä¿åãããŸãã
- REST APIãURLããªãœãŒã¹ãèå¥ããå Žåãéãããæ°ã®æäœããªãœãŒã¹ã«å¯ŸããŠå®è¡ã§ããŸãïŒããšãã°ãHTTPåè©ãCRUDïŒããªã¯ãšã¹ãã¯ã¢ãããã¯ã§ãããåŒã³åºãã®é åºã«éãã¯ãªããåŒã³åºãéã«ç¶æ ã¯ãããŸããã
- ã€ãã³ããã¹ïŒã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®ãªããžã§ã¯ãã®ç¶æ ãéç¥ãŸãã¯åæããããã«äœ¿çšãããWebSocketsãŸãã¯SSEïŒãµãŒããŒéä¿¡ã€ãã³ãïŒãä»ããã¯ã©ã€ã¢ã³ããµãŒããŒçžäºäœçšã®åæ¹åãŸãã¯åæ¹åã¹ããªãŒã ã
- ãŸãã¯æ··åæ¹æ³ã
ãã³ãã©ãŒ
IASã®ããã«ãŠã§ã¢ã®é¡äŒŒç©ã¯ãã³ãã©ãŒïŒãã³ãã©ãŒïŒã§ããããã¯2ã€ã®ãã©ã¡ãŒã¿ãŒïŒã¯ã©ã€ã¢ã³ããšã³ãŒã«ããã¯ïŒãæã¡ãå¥ã®ãã¡ã€ã«ïŒãšã¯ã¹ããŒãå ïŒã«ããéåæé¢æ°ã§ãã ã³ãŒã«ããã¯ãåŒã³åºããããšãIASã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã¯åŠçãå®äºããããšãæ€åºããŸãã é¢æ°ãã¿ã€ã ã¢ãŠãããé·ãã³ãŒã«ããã¯ãåŒãèµ·ãããªãå ŽåãIASã¯HTTPã¹ããŒã¿ã¹408ïŒãªã¯ãšã¹ãã¿ã€ã ã¢ãŠãïŒãè¿ãããã°ã®åé¡ãä¿®æ£ããŸãã ãã³ãã©ãŒãåŒã³åºããããšãã«äŸå€ãçºçããå ŽåãIASã¯ã¯ã©ã€ã¢ã³ããžã®åçãæ³å®ãããšã©ãŒããã£ããããŠãç ŽæãŸãã¯ãªãŒã¯ããããŒã¿æ§é ãæã€ãµã³ãããã¯ã¹ãåé€ããã³åäœæãããŸã§ãæé©ãªæ¹æ³ã§äœæ¥ã埩å ããŸãã
ãã³ãã©ãŒAPIã®äŸïŒ
module.exports = function(client, callback) { dbAlias.equipment.find({ type: client.fields.type }).toArray(function(err, nodes) { if (!err) callback(nodes); else callback({ message: 'Equipment of given type not found' }, 404); }); }
åHTTPèŠæ±ã¯ãããã€ãã®ãã³ãã©ãŒã®å®è¡ãåŒãèµ·ããå¯èœæ§ããããŸãã ããšãã°ãURLãèŠæ±ãããå Žå
domain.com/api/example/method.json
domain.com/api/example/method.json
ãããã³IASã
/impress
ã«èšå®ãããŠããå Žåãå®è¡ã¯
/impress/appplications/domain.com/app/api/example/method.json/
ãã£ã¬ã¯ããªããéå§ããã次ã®æé ãå®è¡ããŸãã
- ãã®ãã£ã¬ã¯ããªãã»ãã·ã§ã³ïŒååšããå ŽåïŒãããã³ãŠãŒã¶ãŒã¢ã«ãŠã³ãïŒã»ãã·ã§ã³ããã€ã³ããããŠããå ŽåïŒããaccess.jsãã¡ã€ã«ã®ã¢ã¯ã»ã¹æš©ããã§ãã¯ãããŸãã
- ãã®ãã£ã¬ã¯ããªããrequest.jsãã³ãã©ãŒãå®è¡ããïŒèŠã€ãã£ãå ŽåïŒãHTTPã¡ãœãããåŒã³åºããããšãã«å®è¡ãããŸãïŒgetãpost ...ïŒã
- get.js ã put.js ã post.jsãªã©ãHTTPèŠæ±ã¡ãœããã«å¯Ÿå¿ãããã³ãã©ãŒã®1ã€ãå®è¡ãããŸãã ïŒèŠã€ãã£ãå ŽåïŒ
- end.jsãã³ãã©ãŒãå®è¡ãã ïŒèŠã€ãã£ãå ŽåïŒãä»»æã®HTTPã¡ãœããã§åŒã³åºãããŸãã
- å¿çããŒã¿ã®ã·ãªã¢ã«åãŸãã¯ããŒãžã®æšæºåãè¡ãããŸãïŒãããè¿ãããå¿çã®ã¿ã€ãã«ãã£ãŠæäŸãããå ŽåïŒã
- ãªã¯ãšã¹ãã®çµæãã¯ã©ã€ã¢ã³ãã«éä¿¡ããã
- ãã®åŸãã¯ã©ã€ã¢ã³ããå¿çãåä¿¡ãããããé 延ãããªãå Žåã lazy.jsãã³ãã©ãŒãå®è¡ãã ïŒèŠã€ãã£ãå ŽåïŒãããšãã°ãä¿çäžã®æäœãå®è¡ããããããŒã¿ããŒã¹ã«ããŒã¿ãå€æŽ/åã«ãŠã³ãããããä¿åãããã§ããŸãã
- å®è¡ã®ã©ã®æ®µéã§ããã¢ããªã±ãŒã·ã§ã³ã³ãŒãã§ãšã©ãŒãçºçããŠæªåŠçã®äŸå€ãçºçããå¯èœæ§ããããŸãããtry / catchã§ã³ãŒããã©ãããããããã¡ã€ã³ãäœæãããããå¿ èŠã¯ãããŸãããããã¯æ¢ã«IASã§è¡ããããšã©ãŒãçºçããå Žåã¯error.jsãã³ãã©ãŒãåŒã³åºãããŸãïŒèŠã€ãã£ãå ŽåïŒã
èŠæ±ããããã£ã¬ã¯ããªã«ç®çã®ãã³ãã©ããªãå ŽåãIASã¯
/app
ã«å°éãããŸã§1ã€äžã®ãã£ã¬ã¯ããªãæ¢ããŸãã ãã³ãã©ãŒããã©ã«ããŒå ã«ããå Žåã
client.inherited()
ä»ããŠãäžèšã®ãã£ã¬ã¯ããªïŒãŸãã¯ããªãŒã®äžçªäžã«ãããã£ã¬ã¯ããªïŒãããã³ãã©ãŒãããã°ã©ã ã§åŒã³åºãããšãã§ããŸãã ãããã£ãŠããã£ã¬ã¯ããªããªãŒã䜿çšããŠãç¶æ¿ãçæãããã³ãã©ãåå®çŸ©ã§ããŸãã ããšãã°ã
/api/example/request.js
ãã³ãã©ãŒã§å¿çããŒã¿ãçæãã3ã€ã®åœ¢åŒã§åºåããããšãã§ããŸãïŒ
/api/example/method.html
ïŒåºåçšã®ãã³ãã¬ãŒããå«ãŸããŠããŸãïŒ htmlïŒã
/api/example/method.csv
ïŒããŒãã«ããããŒã®åœ¢æãªã©ãè¿œå ã®ã¢ã¯ã·ã§ã³ãå«ãŸããå ŽåããããŸãïŒã ãŸãã¯ã
/api/error.js
ãã¡ã€ã«ã§APIå šäœã«å ±éã®ãšã©ãŒãã³ãã©ãŒã
/api/error.js
ãŸãã ãã®ã¢ãããŒãã¯æè»æ§ãé«ããã³ãŒãã®ãµã€ãºãå°ããããŸãããããç¥ãããŠããå¶éã§ããã«ãéãæããŸãã
ãã£ã¬ã¯ããªæ¡åŒµãšã¯ãç¹å®ã®ã¿ã€ãã®ã³ã³ãã³ããèªåçã«è¿ãããããšãæå³ããŸããã€ãŸããç¹å®ã®HTTPããããŒãèšå®ããçµæãç®çã®ããŒã¿åœ¢åŒã«å€æããŸãã ãããã¯ãã¹ãŠæåã§åå®çŸ©ã§ããŸãããæ¡åŒµæ©èœã䜿çšãããšã³ãŒãã®éãæžããŸãã ãã
.json, .jsonp, .xml, .ajax, .csv, .ws, .sse
æ¡åŒµæ©èœã¯
.json, .jsonp, .xml, .ajax, .csv, .ws, .sse
ã§ãããã®ãªã¹ãã¯ããã©ã°ã€ã³ã䜿çšããŠç°¡åã«æ¡åŒµã§ããŸãã
åå空é
次ã®ååããã³ãã©ãŒå ã«è¡šç€ºãããIASé¢æ°ãšæ¥ç¶ãããã©ã€ãã©ãªã«ã¢ã¯ã»ã¹ã§ããŸãã
-
client.req
解æãããèŠæ±ãã£ãŒã«ããclient.req
ãšclient.res
ããããã®å ã®èŠæ±ãšå¿çãžã®ãªã³ã¯ãèŠæ±ãåŠçããããã®APIãã»ãã·ã§ã³ãšèš±å¯ãŠãŒã¶ãŒãžã®ãªã³ã¯ãå«ããªããžã§ã¯ãã - application-ã¢ããªã±ãŒã·ã§ã³ãæ åœãããã®æ§æããã©ã¡ãŒã¿ãŒãããã³å¯Ÿå¿ããã¢ããªã±ãŒã·ã§ã³ãµãŒããŒAPIãå«ããªããžã§ã¯ãã
- db-ããŒãããããã¹ãŠã®DBMSãã©ã€ããŒãšç¢ºç«ãããããŒã¿ããŒã¹æ¥ç¶ãžã®ãªã³ã¯ãå«ãåå空é; db [alias]ãŸãã¯db.aliasãä»ããŠã¢ã¯ã»ã¹ã§ããŸãã
- api-ã¢ããªã±ãŒã·ã§ã³æ§æããèš±å¯ããããã¹ãŠã®çµã¿èŸŒã¿ããã³å€éšã©ã€ãã©ãªãžã®ãªã³ã¯ãå«ãåå空éã ããšãã°ã
api.fs.readFile(...)
ãŸãã¯api.async.parallel(...);
- api.impress-ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒAPIãžã®ãªã³ã¯ã
- JavaScriptããã³Node.jsã«å
±éã®ã·ã¹ãã ã°ããŒãã«èå¥å ïŒ
require, console, Buffer, process, setTimeout, clearTimeout, setInterval, clearInterval, setImmediate, clearImmediate
ã ãã ããããšãã°ãrequireã¢ããªã±ãŒã·ã§ã³ãç¡å¹ã«ãããã®åå空éAPIã«èªåçã«èªã¿èŸŒãŸããç¹å®ã®ã©ã€ãã©ãªã»ããã®ã¿ãæäŸããããšã«ãããæ§æã§ãããã®äžéšã®äœ¿çšãçŠæ¢ã§ããŸãã
ãã³ãã©ãŒã§requireãå®è¡ããå¿ èŠã¯ãããŸãããnpminstallãä»ããŠ/ impressãã©ã«ããŒã«ã©ã€ãã©ãªãã€ã³ã¹ããŒã«ãã/ config / sandbox.jsæ§æãä»ããŠã©ã€ãã©ãªãæ¥ç¶ããã ãã§ãïŒæåã«IASæ§æã§ã次ã«ããŒã«ã«ã§ã¢ããªã±ãŒã·ã§ã³æ§æïŒã ãã®åŸãã©ã€ãã©ãªãŒã¯ãã³ãã©ãŒã§
api.libName
ãä»ããŠè¡šç€ºãããçµã¿èŸŒã¿ã©ã€ãã©ãªãŒãããšãã°
api.path.extname(...)
ãªã©ã衚瀺ãããŸãã
ãã¹ãŠã®ããŒã¿ããŒã¹ãšDBMSãã©ã€ããŒã¯ãdb.nameãä»ããŠè¡šç€ºãããŸãã æ¥ç¶ã¯/config/databases.jsïŒåã¢ããªã±ãŒã·ã§ã³ããšã«ïŒã§æ§æãããèµ·åæã«ç¢ºç«ãããéä¿¡ã倱ããããšèªåçã«åŸ©å ãããŸãã ãã®ã»ããã«ã¯ãMongoDBãPostgreSQLãMySQLã®ãã©ã€ããŒãå«ãŸããŠãããIASã®ãã©ã°ã€ã³ã§ã©ãããããŠããŸããå¿ èŠã«å¿ããŠããã©ã€ããŒãã©ã°ã€ã³ã§DBMSã30åã§ã©ããã§ããŸãã
htmlã³ã³ãã³ãã¿ã€ãã®å Žåãã·ã³ãã«ãªçµã¿èŸŒã¿ãã³ãã¬ãŒããšã³ãžã³ã䜿çšãããŸãããµãŒããŒåŽã§ããŒãžãå®å šã«çæããããã§ã¯ãªããã¬ã€ã¢ãŠãã¢ã»ã³ããªïŒã€ã³ã¿ãŒãã§ã€ã¹ããŒã¹ã®ã¡ã€ã³ã¬ã€ã¢ãŠããšå ŽæïŒãããã³htmlã®ããŒã¿æ§é ããã®ããã€ãã®å€ã®çœ®æã«å¿ èŠã§ãã ãã³ãã¬ãŒããšã³ãžã³ã«ã¯ã€ã³ã¬ã€ãšã€ãã¬ãŒã¿ãŒãå«ãŸããŸãããReactãAngularãEJSãªã©ã䜿çšããŠãã©ãŠã¶ãŒã«æ¢ã«è€éãªãã³ãã¬ãŒããå®è£ ãããã³ãã¬ãŒããšããŒã¿ãåå¥ã«èŠæ±ãããã©ãŠã¶ãŒã§ããããåéããå¿ èŠããããŸãïŒãã³ãã¬ãŒãã®åå©çšã䜿çšïŒã¢ããªã±ãŒã·ã§ã³ã çµã¿èŸŒã¿ã®ãã³ãã¬ãŒããšã³ãžã³ã¯ã
html.template
ãã¡ã€ã«ããã¬ã³ããªã³ã°ãéå§ãã
html.template
ããã®ããŒã¿ããã®ãã¡ã€ã«ã«çœ®ãæããŸãã
@fieldName@
ã³ã³ã¹ãã©ã¯ã
@fieldName@
ã®å€
@fieldName@
眮ãæãã
@[file]@
ã³ã³ã¹ãã©ã¯ãã¯
file.template
ãã¡ã€ã«ãæ¿å ¥ãã
@[name]@ ... @[/name]@
ã³ã³ã¹ãã©ã¯ãã¯nameãšããååã®ããã·ã¥ãŸãã¯é åãå®è£ ããŸãã
ã·ãªã¢ã«åãããããŒã¿ïŒ.jsonã.jsonpã.csvãªã©ïŒãè¿ããã³ãã©ãŒã®å Žåããã³ãã¬ãŒãã¯å¿ èŠãããŸããã ãããã®å Žåã
client.context.data
ããŒã¿æ§é ã¯åçŽã«JSONã§ã·ãªã¢ã«åãããŸãïŒååž°ã¯ãªããã³ã°ã䜿çšïŒã 䟿å®äžãæåã®ãã©ã¡ãŒã¿ãŒ
callback({ field: "value" });
ã«ãã£ãŠãã³ãã©ãŒããããŒã¿æ§é ãè¿ãããšãã§ã
callback({ field: "value" });
ãããã³ãã©ãŒãã³ãŒã«ããã¯ã«ããŒã¿ãè¿ããã
client.context.data
ã«å²ãåœãŠãå Žåããã®ãã³ãã©ãŒïŒçŸåšã®HTTPèŠæ±ã®çµäºãŸã§ïŒãããŒã¿ãèªã¿åããå€æŽã§ããŸãã
ãã³ãã©ãŒã¯ãhttpã¹ããŒã¿ã¹ã³ãŒããå€æŽããç¬èªã®httpããããŒãè¿œå ã§ããŸãããéåžžã¢ãŒãã§ã¯ãå®å šãªAPIã¡ãœãããæã€ã¯ã©ã€ã¢ã³ããªããžã§ã¯ãã§ã®ã¿åäœããŸãïŒ
client.error(code), client.download(filePath, attachmentName, callback), client.cache(timeout), client.end(output)
ãªã© ããŒãžã§ã³0.1.157ãããIASã¯ããã«ãŠã§ã¢ãã³ãã©ãŒã®éšåçãªãµããŒããå®è£ ããŸãããããã«ã¯ãreqãresãnextã®3ã€ã®ãã©ã¡ãŒã¿ãŒããããŸãã ããããããã¯éåžžã«ãŸãã§ããããããžã§ã¯ãããè¡šçŸãŸãã¯æ¥ç¶ããããã«ç§»æ€ãããã³ãŒãã¯éåžžãæ°åçããç°¡åã«æžãçŽãããšãã§ããŸãã
äž¡æ¹ã®ã¿ã€ãã®ãã³ãã©ãŒãã€ãŸã ãã³ãã©ãŒïŒ2çªç®ã®ãã©ã¡ãŒã¿ãŒïŒãšããã«ãŠã§ã¢ïŒ3çªç®ã®ãã©ã¡ãŒã¿ãŒïŒã¯ããã¡ã€ã«ããã ãã§ãªãã次ã®ããã«ã¡ãœããåŒã³åºããä»ããŠæåã§ã«ãŒãã£ã³ã°ãè¿œå ããããšã«ãã£ãŠãå¯èœã§ãã
application.get('/helloWorld.ajax', function(req, res, next) { res.write('<h1>Middleware handler style</h1>'); next(); });
ã¢ããªã±ãŒã·ã§ã³æ§é
ãµãŒããŒã³ãŒãã¯ããã»ããµã«éå®ããããã¢ããªã±ãŒã·ã§ã³ã«ã¯ããã¡ã€ã³ã¢ãã«ãå€ãã®ããã»ããµã§äœ¿çšãããç¹æ®ãªã©ã€ãã©ãªãšãŠãŒãã£ãªãã£ãããã³ããžãã¯ãšããŒã¿ãé 眮ããããã®ãã®ä»ã®ãå Žæããå«ãŸããŸãã IASã§å®è¡ããããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã¯/ applicationsãã£ã¬ã¯ããªã«ããã次ã®æ§é ãæã£ãŠããŸãã
- / app-ãµã€ãã®ã«ãŒãã«å¯Ÿå¿ãããã³ãã©ãŒã®ã«ãŒããã£ã¬ã¯ããª
hostname
hostname
- / config-ã¢ããªã±ãŒã·ã§ã³æ§æ
- / doc-ããã¥ã¡ã³ããšãµããŒãè³æã
- / files-ãŠãŒã¶ãŒãã¢ããããŒããããã¡ã€ã«ãé 眮ããããã®ãã£ã¬ã¯ããªïŒãµããã£ã¬ã¯ããªã®2ã¬ãã«ãŸãã¯3ã¬ãã«ã®ã·ã¹ãã ã¯ãå€æ°ã®ãã¡ã€ã«ã§ãã¡ã€ã«ã·ã¹ãã ãéè² è·ã«ããªãããã«èªåçã«æ§ç¯ãããŸãïŒ
- / init-ãµãŒããŒã®èµ·åæã«éå§ããåæåã³ãŒãïŒããã§ã¯ãããã°ã©ã ã§ãã³ãã©ãŒãäœæããããã¡ã¢ãªå ã®ããŒã¿æ§é ãæºåããããtcpããŒããéãããããããšãã§ããŸãïŒã
- / lib-èµ·åæã«ïŒãã ãåæååŸã«ïŒããŒããããã¢ããªã±ãŒã·ã§ã³ã³ãŒãå šäœããã¢ã¯ã»ã¹å¯èœãªã©ã€ãã©ãªãšãŠãŒãã£ãªãã£ã®ãã£ã¬ã¯ããªã
- / log-ãã°ã®ãã£ã¬ã¯ããªïŒæ§æã«ãã®ã¢ããªã±ãŒã·ã§ã³ã®åå¥ã®ãã°ãããå ŽåïŒ
- / model-ãã¡ã€ã³ã¢ãã«ã®ãã£ã¬ã¯ããªïŒèµ·åæã«ããŒããããŸãããåæååŸïŒã
- / setup-ãã®ãã£ã¬ã¯ããªã«ããjsãã¡ã€ã«ã¯ãIASãŸãã¯ãµãŒããŒå šäœãåèµ·åãããšãã«1åã ãå®è¡ãããŸãããã®å Žæã¯ãæäœäžã«ã¢ããªã±ãŒã·ã§ã³ã®ã©ã€ããµã€ã¯ã«å šäœãç¶æããããã«å¿ èŠãªæŽæ°ãŸãã¯ç§»è¡ã¹ã¯ãªããã«å¿ èŠã§ãã
- / tasks-ã¹ã±ãžã¥ãŒã«ãããã¿ã¹ã¯ãé 眮ããããã®ãã£ã¬ã¯ããªã2ã€ã®ã¿ã€ãããããŸããå®æçã«å®è¡ãããç¹å®ã®ééã§å®è¡ããããŸãã¯æå®ããæéã«å®è¡ããã
- / tmp-äžæãã¡ã€ã«ã®ãã£ã¬ã¯ããªã
次ã®ãã£ã¬ã¯ããªã«ã¯æ¬¡ã®ãã£ã¬ã¯ããªã衚瀺ãããŸãïŒ åé¡ïŒ195 ïŒïŒ
- / client-ã¯ã©ã€ã¢ã³ãéšåã®ãœãŒã¹ã³ãŒãé åžã®ãã£ã¬ã¯ããªã
- / static-åéãããã¯ã©ã€ã¢ã³ãã¯
/static
ã«é 眮ãããããã€ãã®äžè¬çãªããŒã«ãã³ã¬ã¯ã¿ãŒãšããŠäœ¿çšã§ããŸãã
IASæ©èœ
ãã®èšäºã¯åºæã®ãŸãŸã«ããŠãããŸãããããã®ãããããã§ã¯IASã®å µåšåº«å šäœã«ã€ããŠè©³ãã説æãããèªè ãéå°ã«èª¬æããŸããã äž»ãªãã®ã®åçŽãªåæã«éå®ããŸãïŒãµãŒãã¹ã«ããç»é²ïŒããŒã¢ã³ïŒãå€ãã®ããã»ã¹ãšå€ãã®ãµãŒããŒãžã®ééçãªã¹ã±ãŒãªã³ã°ããŠãŒã¶ãŒãšã»ãã·ã§ã³ã®çµ±åã·ã¹ãã ïŒå¿åããã³èªèšŒãå«ãïŒãSSEïŒãµãŒããŒéä¿¡ã€ãã³ãïŒããã³ã·ã¹ãã ãšã®Webãœã±ããã®ãµããŒããã£ãã«ããã³ã¡ãã»ãŒãžã®ãµãã¹ã¯ã©ã€ãããããã·èŠæ±ã®ãµããŒããURLæžãæãããããã¯ãŒã¯APIã®ã€ã³ããã¹ãã¯ã·ã§ã³ããã£ã¬ã¯ããªã€ã³ããã¯ã¹ã®çºè¡ãaccess.jsïŒ.htaccessã«é¡äŒŒïŒãä»ãããã£ã¬ã¯ããªãžã®ã¢ã¯ã»ã¹ã®å¶åŸ¡ãã¢ããªã±ãŒã·ã§ã³ã®æ§æããã®ã³ã°ããã°ã®ã¹ã¯ããŒã«ãèšäºã®è¿ä¿¡ ã¡ã¢ãªãã£ãã·ã¥ãgzipå§çž®ãHTTPããããŒif-modified-sinceããã³HTTP 304ïŒNot ModifiedïŒã®ãµããŒããHTTPSã®ãµããŒããéšåçã«ã¢ããããŒãããµããŒãããã¹ããªãŒãã³ã°ãã¡ã€ã«ïŒæå®ãããå Žæããæå®ãããå Žæãžããã¬ã€ã€ãŒãé垞䜿çšããïŒããšãã°ãHTTPããããŒïŒContent-Rangeããã³Accept-RangesïŒãä»ããHTML5ãããªã¿ã°ãã¯ãªãŒã³ãã·ã³ïŒCentOSãUbuntuãDebianïŒã®è¿ éãªãµãŒããŒå±éã®ããã®ã¹ã¯ãªãããIPCãHTTPããã³ZeroMQãä»ããçµã¿èŸŒã¿ã®ããã»ã¹ééä¿¡ã¡ã«ããºã ãç¶æ ãåæããããã®ç¹å¥ãªAPIããã»ã¹éãçµã¿èŸŒã¿ãµãŒããŒãã«ã¹ã¢ãã¿ãªã³ã°ã¡ã«ããºã ãn ä¿çäžã®ã¿ã¹ã¯ãèµ·åããã·ã¹ãã ãã¯ãŒã«ãŒïŒäžŠåããã»ã¹ïŒã®çæãããŒã¿æ§é ãšããŒã¿ããŒã¹ã¹ããŒãã®æ€èšŒãSQLäºæDBMSã®ã¹ããŒãããã®ããŒã¿æ§é ã®çæãèªåãšã©ãŒåŠçãšãã³ã°ã¹ã¿ãã¯ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®æé©åããµã³ãããã¯ã¹ã·ãŒã«ããHTTPãµããŒãåºæ¬èªèšŒãä»®æ³ãã¹ãããã³ä»®æ³ãã¹ã®åŠçãåºå®IPïŒåºå®ïŒããã©ã°ã€ã³ïŒå«ã ãã¹ããŒããgeoipãnodemailerãjsãããã£ã±ãŒã·ã§ã³ãsass翻蚳ãªã©ïŒããŠããããã¹ããµãã·ã¹ãã ããã¡ã€ã«ã®ã¢ããããŒã/ããŠã³ããŒãçšãŠãŒãã£ãªãã£ãªã©ã
ãããã«
ImpressïŒIASïŒã¯æŽ»çºã«éçºãããŠããã4ãã7ã®ãã€ããŒããŒãžã§ã³ãæ¯é±è¡šç€ºãããŸãã çŸåšãããŒãžã§ã³0.1.195ãé¢é£ããŠãããããŒãžã§ã³0.2ãè¿ã¥ããŠããŸãããã®ããŒãžã§ã³ã§ã¯ãã¢ããªã±ãŒã·ã§ã³æ§é ãšåºæ¬APIãä¿®æ£ãããã¹ãŠã®0.2.xããŒãžã§ã³ã®åŸæ¹äºææ§ã確èªããŠããŸãã 0.2.xã§ã¯ãæé©åã®åé¡ãšãã°ä¿®æ£ã®ã¿ãæ±ããæ©èœã®æ¡åŒµã¯ãããã0.2.xã«åºã¥ãã¢ããªã±ãŒã·ã§ã³ã®åèšèšãå¿ èŠãšããªãå Žåã«ã®ã¿å¯èœã«ãªããŸãã 0.3.xãã©ã³ãã§ã¯ããã¹ãŠã®äž»èŠãªé©æ°ãšå®éšã䞊è¡ããŠå°å ¥ãããŸãã ç§ã¯èª°ãããããžã§ã¯ããéçºããããã«æåŸ ããŸãããããŠãç§ã«ãšã£ãŠã¯ãå°ãªããšãé¢é£æ§ãããéããã³ãŒããç¶æããããšãçŽæããŸãã ããŒãžã§ã³1.0ã¯ãç¬ç«ããéçºè ãã³ãŒããå®å šã«ãµããŒãã§ããããšãç解ãããšãã«ã®ã¿è¡šç€ºãããŸãã ããã¥ã¡ã³ãã¯çŸåšæºåäžã§ãããããŸã§ã¯ãæ§é ãšã¢ãŒããã¯ãã£ãé »ç¹ã«å€æŽããããšããäºå®ã«ããäžå¯èœã§ããããããŒãžã§ã³0.2ã«åããŠãªã³ã¯ãå ¬éããŸãã ããã«å ç«ã£ãŠãIASãããã©ã«ãã¢ããªã±ãŒã·ã§ã³ãšããŠã€ã³ã¹ããŒã«ããäŸã䜿çšããŠãIASããã詳现ã«èª¿ã¹ãããšãã§ããŸãã
2015-01-11çŸåšã®æ°åã®æ°åïŒæšæ¥npmããããŠã³ããŒãïŒ1,338ãä»é±ïŒ5,997ãå æïŒ21,223ãgithubã®æïŒ168ããªããžããªãžã®è²¢ç®ïŒ8人ãã³ãŒãè¡ïŒ6 120ããœãŒã¹ã®ãµã€ãºïŒ207 KbïŒãã¡ã«ãŒãã«ïŒ118KbïŒãã³ãŒãã®å¹³ååšæçè€éãïŒ20ãgithubã§è§£æ±ºãããåé¡ã®æ°ïŒ151ãæªè§£æ±ºã®åé¡ïŒ9ãæåã«å ¬éãããããŒãžã§ã³ã®æ¥ä»ïŒ2013-06-08ã Travis CIã§ãã«ãïŒ233ãgithubã³ãããïŒ468ã
åç §è³æ
NPMïŒ www.npmjs.com/package/impress
GithubïŒ github.com/tshemsedinov/impress