ããã«ã¡ã¯ãã¿ããªãç§ãã¡ã¯åœ±ããåŸã
ã«å§¿ãçŸãã補åã«é¢ããäžé£ã®èšäºãç¶ããŠããŸããåŸ
ã€ã³ã¹ããŒã«
ããããããªè©±ããå§ããŸãããããã®ã¢ããªã±ãŒã·ã§ã³ã¯ãLinuxãWindowsãMacOS ã® 3 ã€ã®ãã©ãããã©ãŒã ã§å©çšå¯èœã§ãããå®éã«ãã¹ããããŠããŸããèå³ã®ãã OS ã®ã€ã³ã¹ããŒã©ãŒã次ããããŠã³ããŒãã§ããŸãã
å®éšã·ããªãª
ãã¹ã察象ãšããŠæ¬¡ã®æšæºã·ããªãªãéžæããŸããã
- ãã°ã€ã³: ãŠãŒã¶ãŒ - 管çè ããã¹ã¯ãŒã - ãã¹ã¯ãŒã
- æ°ãããšã³ããªãè¿œå ãã
- ã¬ã³ãŒããæ£ããè¿œå ãããããšã確èªããŠã¿ãŸããã
ãã¹ãããŸã
ãããžã§ã¯ããäœæããæ¿èªãªãã«ãšã³ãã£ãã£ãäœæããããšããŠããŸã
ãŸããæ°ãããããžã§ã¯ããäœæããŸããã(File->æ°ãããããžã§ã¯ãïŒãã¢ããªã±ãŒã·ã§ã³ãåããŠèµ·åããå Žåã¯ãæ°ãããããžã§ã¯ããèªåçã«éããŸãããŸããæ°ããã¬ã³ãŒããäœæãããªã¯ãšã¹ããè¡ã£ãŠã¿ãŸããã (æ¿èªãªãã§ã¬ã³ãŒãã®äœæãå¯èœãªå Žå)ããããžã§ã¯ã ããŒãã®ã³ã³ããã¹ã ã¡ãã¥ãŒããé ç®ãéžæããŸã ããŒããè¿œå -> ãªã¯ãšã¹ãã¹ããããããŒãåã次ã®ããã«èšå®ããŸãã äœææçš¿ããã®çµæãããªãŒã«æ°ããããŒããäœæããããã®ããŒãã®ã¿ããéããŸãã次ã®ãªã¯ãšã¹ããã©ã¡ãŒã¿ãèšå®ããŸãããã
- ãªã¯ãšã¹ãã¿ã€ã: POST
- URLïŒ
https://testmace-quick-start.herokuapp.com/posts - ãªã¯ãšã¹ãæ¬æ: å€ãå«ã json
{"title": "New testmace quick start post"}
ãã¹ãŠãæ£ããå®è¡ãããšãã€ã³ã¿ãŒãã§ã€ã¹ã¯æ¬¡ã®ããã«ãªããŸãã
ãã ãããªã¯ãšã¹ããå®è¡ããããšãããšããµãŒããŒã¯ 401 ã³ãŒããè¿ããèš±å¯ããªããã°ãã®ãµãŒããŒã§ã¯äœãååŸã§ããŸããããŸããäžè¬çã«ã¯äºæ³éãã§ãïŒã
èªå¯ãªã¯ãšã¹ãã®è¿œå
ãã§ã«è¿°ã¹ãããã«ãPOST ãšã³ããã€ã³ãããããŸãã /login
ããã㯠json ããã©ãŒã ã®ãªã¯ãšã¹ãæ¬æãšããŠåãåããŸãã {"username": "<username>", "password": "<password>"}
ã©ã username
О password
(ç¹°ãè¿ãã«ãªããŸãããäžèšã®å°å
¥æ®µèœãã) ã«ã¯æå³ããããŸã admin
О password
ãããããå¿çãšããŠããã®ãšã³ããã€ã³ãã¯æ¬¡ã®ãã㪠json ãè¿ããŸãã {"token": "<token>"}
ãèªèšŒã«äœ¿çšãããŠããã ããŸããäœæããŸããã ãªã¯ãšã¹ãã¹ããã ååä»ãããŒã ãã°ã€ã³ãç¥å
ãšããŠæ©èœããŸã ãããžã§ã¯ã ããŒããã©ãã° ã¢ã³ã ããããã䜿çšããŠãããªãŒå
ã®ç¹å®ã®ããŒãããã®ããŒããããé«ãäœçœ®ã«ç§»åããŸã äœææçš¿ãæ°ããäœæãããªã¯ãšã¹ãã«æ¬¡ã®ãã©ã¡ãŒã¿ãèšå®ããŸãããã
- ãªã¯ãšã¹ãã¿ã€ã: POST
- URLïŒ
https://testmace-quick-start.herokuapp.com/login - ãªã¯ãšã¹ãæ¬æ: å€ãå«ã json
{"username": "admin", "password": "password"}
ãªã¯ãšã¹ããå®è¡ããã¬ã¹ãã³ã¹å ã®ããŒã¯ã³ãå«ã 200 çªç®ã®ã³ãŒããåä¿¡ããŠââã¿ãŸãããããã®ãããªãã®ïŒ
ãªãã¡ã¯ã¿ãªã³ã°: ãã¡ã€ã³ã®éè€ãåé€ãã
ãããŸã§ã®ãšããããªã¯ãšã¹ãã¯åäžã®ã¹ã¯ãªããã«ãªã³ã¯ãããŠããŸãããããããæ¬ ç¹ã¯ããã ãã§ã¯ãããŸãããããèŠããšãäž¡æ¹ã®ãªã¯ãšã¹ãã§å°ãªããšããã¡ã€ã³ãéè€ããŠããããšãããããŸããè¯ããªããä»åŸã®ã¹ã¯ãªããã®ãã®éšåããªãã¡ã¯ã¿ãªã³ã°ããææãæ¥ãŸãããå€æ°ã¯ããã«åœ¹ç«ã¡ãŸãã
倧ãŸãã«èšããšãå€æ°ã¯ä»ã®åæ§ã®ããŒã«ãããã°ã©ãã³ã°èšèªãšåã圹å²ãæãããŸã - éè€ãæé€ããå¯èªæ§ãé«ããŸããå€æ°ã«ã€ããŠè©³ããã¯ã
ãããžã§ã¯ãããŒãã¬ãã«ã§å€æ°ãå®çŸ©ããŸããã domain
æå³ã®ãã https://testmace-quick-start.herokuapp.com
ã ãã®ããã«å¿
èŠã§ã
- ãã®ããŒããå«ãã¿ããéããå³äžã®é»åã¢ã€ã³ã³ãã¯ãªãã¯ããŸãã
- ã¯ãªã㯠+ å€æ°ã®è¿œå
- å€æ°åãšå€ãå
¥åããŸã
ãã®å Žåãå€æ°ãè¿œå ããããã€ã¢ãã°ã¯æ¬¡ã®ããã«ãªããŸãã
ããããŸãããç¶æ¿ã«ããããã®å€æ°ãä»»æã®ãã¹ã ã¬ãã«ã®åå«ã§äœ¿çšã§ããããã«ãªããŸãããç§ãã¡ã®å Žåããããã¯ããŒãã§ã ãã°ã€ã³ О äœææçš¿ãããã¹ããã£ãŒã«ãã§å€æ°ã䜿çšããã«ã¯ã次ã®ããã«èšè¿°ããå¿
èŠããããŸãã ${<variable_name>}
ãããšãã°ããã°ã€ã³ URL ã¯æ¬¡ã®ããã«å€æãããŸãã ${domain}/login
ããããã äœææçš¿ ããŒãã® URL ã¯æ¬¡ã®ããã«ãªããŸã ${domain}/posts
.
ãããã£ãŠãDRY ååã«åºã¥ããŠãã·ããªãªããããã«æ¹åããŸããã
ããŒã¯ã³ãå€æ°ã«ä¿åãã
å€æ°ã«ã€ããŠè©±ããŠããã®ã§ããã®ãããã¯ãå°ãæ¡åŒµããŠã¿ãŸããããçŸæç¹ã§ã¯ããã°ã€ã³ã«æåãããšããµãŒããŒããèªèšŒããŒã¯ã³ãåãåããŸããããã¯åŸç¶ã®ãªã¯ãšã¹ãã§å¿
èŠã«ãªããŸãããã®ããŒã¯ã³ãå€æ°ã«ä¿åããŸãããããªããªãå€æ°ã®å€ã¯ã¹ã¯ãªããã®å®è¡äžã«æ±ºå®ãããŸããããã«ã¯ç¹å¥ãªã¡ã«ããºã ã䜿çšããŸãã
ãŸãããã°ã€ã³èŠæ±ãå®è¡ããŸããããã¿ãå 解ææžã¿ åçããã«ã¯ãã«ãŒãœã«ãããŒã¯ã³ã®äžã«ç§»åããã³ã³ããã¹ã ã¡ãã¥ãŒ (ããŠã¹ã®å³ãã¿ã³ãŸãã¯ãã¿ã³ãã¯ãªãã¯ãããšåŒã³åºãããŸã) ã§é ç®ãéžæããŸãã å€æ°ã«ä»£å ¥ããã次ã®ãã£ãŒã«ããå«ããã€ã¢ãã°ã衚瀺ãããŸãã
- ãã¹ â çãã®ã©ã®éšåãæ¡çšãããã (ç§ãã¡ã®å Žåã¯
body.token
) - çŸåšã®äŸ¡å€ â ãã¹ã«æ²¿ã£ãŠååšããå€ (ãã®å Žåãããã¯ããŒã¯ã³å€ã§ã)
- å€æ°å â å€æ°ã®ååã çŸåšã®äŸ¡å€ ä¿åãããŸããç§ãã¡ã®å Žåã¯æ¬¡ã®ããã«ãªããŸã
token
- Node â ã©ã®ç¥å ã«å€æ°ãäœæãããã å€æ°åããããžã§ã¯ããéžæããŸããã
å®æãããã€ã¢ãã°ã¯æ¬¡ã®ããã«ãªããŸãã
ããã§ãããŒããå®è¡ããããã³ã« ãã°ã€ã³ åçå€æ° token
å¿çããã®æ°ããå€ã§æŽæ°ãããŸãããããŠããã®å€æ°ã¯æ¬¡ã®å Žæã«ä¿åãããŸã ãããžã§ã¯ã ããŒãã«è¿œå ãããç¶æ¿ã®ãããã§åå«ãå©çšã§ããããã«ãªããŸãã
åçå€æ°ã«ã¢ã¯ã»ã¹ããã«ã¯ã次ã䜿çšããå¿
èŠããããŸãã $dynamicVar
ãããšãã°ãä¿åãããããŒã¯ã³ã«ã¢ã¯ã»ã¹ããã«ã¯ã次ã®ããã«åŒã³åºãå¿
èŠããããŸãã ${$dynamicVar.token}
.
èªå¯ããŒã¯ã³ããªã¯ãšã¹ãã«æž¡ããŸã
åã®æé ã§èªèšŒããŒã¯ã³ãåãåããŸãããåŸã¯ããããŒãè¿œå ããã ãã§ãã Authorization
æå³ã®ãã Bearer <tokenValue>
æ¿èªãå¿
èŠãšãããã¹ãŠã®ãªã¯ãšã¹ãïŒä»¥äžãå«ãïŒ äœææçš¿ããããè¡ãã«ã¯ããã€ãã®æ¹æ³ããããŸãã
- ããŒã¯ã³ãæåã§ã³ããŒãã察象ã®ãªã¯ãšã¹ãã«èªå¯ããããŒãè¿œå ããŸãããã®æ¹æ³ã¯æ©èœããŸããããã®äœ¿çšã¯ãäœæããŠæšãŠããã¿ã€ãã®ãªã¯ãšã¹ãã«ã®ã¿éå®ãããŸããã¹ã¯ãªããã®ç¹°ãè¿ãå®è¡ã«ã¯é©ããŠããŸãã
- æ©èœã䜿çšãã
èªå¯ . - 䜿çšãã
ããã©ã«ãã®ããããŒ
2 çªç®ã®æ¹æ³ã䜿çšããã®ã¯æããã§ããããã®èšäºã®æèã§ã¯ããã®ã¢ãããŒãã¯é¢çœããããŸãããããã§ãããå®éã®ãšãããæ¿èªã¡ã«ããºã ãã©ã¹ãã€ãã¹ã¯ä»ã®ããŒã«ã§ããç¥ãããŠããŸã (ããšã次ã®ãããªãã®ããã£ãŠã)
ãã 1 ã€ã¯ããã©ã«ãã®ããããŒã§ããç°¡åã«èšããšãããã©ã«ã ããããŒã¯ãæ瀺çã«ç¡å¹ã«ããªãéããããã©ã«ãã§ãªã¯ãšã¹ãã«è¿œå ãããç¶æ¿ããã HTTP ããããŒã§ãããã®æ©èœã䜿çšãããšãããšãã°ãã«ã¹ã¿ã èªèšŒãå®è£ ããããã¹ã¯ãªããå ã®éè€ãåçŽã«åé€ãããã§ããŸãããã®æ©èœã䜿çšããŠãããããŒã§ããŒã¯ã³ãæž¡ããŠã¿ãŸãããã
以åã¯ãããŒã¯ã³ãåçå€æ°ã«æ
éã«ä¿åããŠããŸããã $dynamicVar.token
ãããžã§ã¯ãããŒãã¬ãã«ã§ãæ®ã£ãŠããã®ã¯æ¬¡ã®ããšãè¡ãã ãã§ãã
- ããã©ã«ãã®ã¿ã€ãã«ãå®çŸ©ãã
Authorization
æå³ã®ããBearer ${$dynamicVar.token}
ãããžã§ã¯ãããŒãã¬ãã«ã§ããããè¡ãã«ã¯ãããŒãã®ãããžã§ã¯ã ã€ã³ã¿ãŒãã§ã€ã¹ã§ãããã©ã«ãã®èŠåºã (ãã¿ã³ ããã ãã¯ãªãã¯ããŠ)ã察å¿ããã¿ã€ãã«ãè¿œå ããŸããå€ãå ¥åããããã€ã¢ãã°ã¯æ¬¡ã®ããã«ãªããŸãã
- ãã°ã€ã³èŠæ±ãããã®ããããŒãç¡å¹ã«ããŸããããã¯åœç¶ã®ããšã§ãããã°ã€ã³æã«ã¯ãŸã ããŒã¯ã³ãæã£ãŠããªãããããã®ãªã¯ãšã¹ãã§ããŒã¯ã³ãã€ã³ã¹ããŒã«ããŸãããããã£ãŠãã¿ãã®ãªã¯ãšã¹ãã®ãã°ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ã§ ããã ã®é åã«ããã éºäŒæ§ Authorization ããããŒã®ãã§ãã¯ãå€ããŸãã
ããã ãã§ããããã§ããã°ã€ã³ ããŒããé€ãããããžã§ã¯ã ããŒãã®åã§ãããã¹ãŠã®ãªã¯ãšã¹ãã«èªèšŒããããŒãè¿œå ãããŸãããã®æ®µéã§ã¯ãã§ã«ã¹ã¯ãªããã®æºåãã§ããŠããããšãããããããšã¯ãããèµ·åããã ãã§ãããéžæããŠã¹ã¯ãªãããå®è¡ã§ããŸãã ã©ã³ ãããžã§ã¯ã ããŒãã®ã³ã³ããã¹ã ã¡ãã¥ãŒå ã
æçš¿äœæãæ£ãããã©ããã確èªãã
ãã®æ®µéã§ãã¹ã¯ãªããã¯ãã°ã€ã³ããèªèšŒããŒã¯ã³ã䜿çšããŠæçš¿ãäœæã§ããŸãããã ããæ°ããäœæãããæçš¿ã®ååãæ£ããããšã確èªããå¿ èŠããããŸããã€ãŸããæ¬è³ªçã«æ®ã£ãŠããã®ã¯æ¬¡ã®ããšãè¡ãããšã ãã§ãã
- IDã§æçš¿ãåä¿¡ãããªã¯ãšã¹ããéä¿¡ãã
- ãµãŒããŒããåä¿¡ããååãæçš¿ã®äœææã«éä¿¡ãããååãšäžèŽããããšã確èªããŸãã
æåã®ã¹ããããèŠãŠã¿ãŸãããã ID å€ã¯ã¹ã¯ãªããã®å®è¡äžã«æ±ºå®ããããããåçå€æ° (次ã®ããã«åŒã³ãŸã) ãäœæããå¿
èŠããããŸãã postId
) ããŒããã äœææçš¿ ãããžã§ã¯ãããŒãã¬ãã«ã§ããããè¡ãæ¹æ³ã¯ãã§ã«ç¥ã£ãŠããŸããã»ã¯ã·ã§ã³ãåç
§ããŠãã ããã ããŒã¯ã³ãå€æ°ã«ä¿åãããæ®ã£ãŠããã®ã¯ããã® ID ã䜿çšããŠæçš¿ãåä¿¡ãããªã¯ãšã¹ããäœæããããšã ãã§ãããããè¡ãã«ã¯ãRequestStep ãäœæããŸããã ãã¹ããåãåã 次ã®ãã©ã¡ãŒã¿ã䜿çšããŸãã
- ãªã¯ãšã¹ãã¿ã€ã: GET
- URL: ${ãã¡ã€ã³}/posts/${$dynamicVar.postId}
2 çªç®ã®ã¹ããããå®è£
ããã«ã¯ã次ã®ããšãç解ããå¿
èŠããããŸãã Compare
æŒç®åã«ããã¢ãµãŒã·ã§ã³ equal
ãã¢ãµãŒã·ã§ã³ãäœæããã«ã¯ããã€ãã®æ¹æ³ããããŸãã
- é·ãã RequestStep ããŒãã®ã³ã³ããã¹ã ã¡ãã¥ãŒããã¢ãµãŒã·ã§ã³ ããŒããæåã§äœæããŸããäœæããã¢ãµãŒã·ã§ã³ ããŒãã§ã察象ã®ã¢ãµãŒã·ã§ã³ãè¿œå ãããã£ãŒã«ãã«å€ãå ¥åããŸãã
- éããã³ã³ããã¹ã ã¡ãã¥ãŒã䜿çšããŠãRequestStep ããŒãå¿çããã®ã¢ãµãŒã·ã§ã³ãšãšãã«ã¢ãµãŒã·ã§ã³ ããŒããäœæããŸãã
2 çªç®ã®æ¹æ³ã䜿çšããŠã¿ãŸããããç§ãã¡ã®å Žåã¯æ¬¡ã®ããã«ãªããŸãã
ç解ã§ããªã人ã®ããã«ãäœãèµ·ãã£ãŠãããã次ã«ç€ºããŸãã
- ããŒãã§ãªã¯ãšã¹ããè¡ã ãã¹ããåãåã
- ã¿ãå 解ææžã¿ å¿çããã³ã³ããã¹ã ã¡ãã¥ãŒãåŒã³åºããŠéžæããŸã ã¢ãµãŒã·ã§ã³ã®äœæ -> æ¯èŒ -> çãã
ããã§ãšãããããŸããæåã®ãã¹ããäœæãããŸãããã·ã³ãã«ã§ãããããã§ãã¹ã¯ãªãããå®å
šã«å®è¡ããŠçµæã楜ããããšãã§ããŸããæ®ã£ãŠããã®ã¯ããããå°ããªãã¡ã¯ã¿ãªã³ã°ããŠåãåºãããšã ãã§ã title
å¥ã®å€æ°ã«å
¥ããŸãããã ããããã¯å®¿é¡ãšããŠæ®ããŠãããŸã)
ãŸãšã
ãã®ã¬ã€ãã§ã¯ãæ¬æ Œçãªã·ããªãªãäœæããåæã«è£œåã®æ©èœã®äžéšã確èªããŸããããã¡ããããã¹ãŠã®æ©èœã䜿çšããããã§ã¯ãããŸããã次ã®èšäºã§ãTestMace ã®æ©èœã®è©³çŽ°ãªæŠèŠã説æããŸããä¹ããæåŸ ïŒ
远䌞ãã¹ãŠã®æé ãåçŸããã®ãé¢åãªäººã®ããã«ã芪åã«èšé²ããŸããã
åºæïŒ habr.com