æç¢ºã§äººã«åªããã¡ãã»ãŒãžã®ããã®APIãšã©ãŒå¥çŽãã¿ãŒã³
å®å®ããã³ãŒããããŒã«ã©ã€ãºãããã¡ãã»ãŒãžãUIåãã®ãã³ããåããAPIãšã©ãŒå¥çŽãèšèšãããµããŒãè² è·ãæžãããŠãŒã¶ãŒãçŽ æ©ã埩æ§ã§ããããã«ããŸãã

ãªããããŸããªAPIãšã©ãŒã¯å®éã®ãŠãŒã¶ãŒåé¡ãçãã®ã
ãããŸããªAPIãšã©ãŒã¯åãªãæè¡çãªç ©ãããã§ã¯ãããŸããããããã¯ãäžã®è©°ãŸãã®ç¬éã§ããŠãŒã¶ãŒã¯äœãããã°ãããæšæž¬ãããã°ãã°ãããããŠããŸããŸãããäœããããŸããããªãã£ãããšããäžèšãããµããŒããã±ããã®å¢å ãé¢è±ããããŠå®å šã«ã¯è§£æ±ºãããªããã°ã«ã€ãªãããŸãã
ãããããã¿ãŒã³ã¯ããã§ã: ãŠãŒã¶ãŒããã©ãŒã ãä¿åããããšãããšãUIã¯äžè¬çãªããŒã¹ãã衚瀺ããããã¯ãšã³ãã®ãã°ã«ã¯æ¬åœã®åå ïŒ"unique constraint violation on email"ïŒãæ®ã£ãŠããŸãããŠãŒã¶ãŒã¯äœãå€ããã°ãããåãããŸããããµããŒãã¯ãã°ã§æ€çŽ¢ã§ããä¿¡é Œã§ããã³ãŒãããªãããæå©ãã§ããŸãããåãåé¡ãç°ãªãã¹ã¯ãªãŒã³ã·ã§ãããèšãåãã§äœåºŠãå ±åããããŸãšãŸã£ãã°ã«ãŒãã³ã°ãã§ããŸããã
ãšã³ãžãã¢åãã®è©³çްãšãŠãŒã¶ãŒã®ããŒãºã¯åãã§ã¯ãããŸããããšã³ãžãã¢ã¯æ£ç¢ºãªå€±æã®æèïŒã©ã®ãã£ãŒã«ããã©ã®ãµãŒãã¹ãã©ã®ã¿ã€ã ã¢ãŠãïŒã欲ããäžæ¹ã§ããŠãŒã¶ãŒã¯ããã®ã¡ãŒã«ã¯æ¢ã«äœ¿ãããŠããŸãããµã€ã³ã€ã³ãããå¥ã®ã¡ãŒã«ã䜿ã£ãŠãã ããããã®ãããªæç¢ºãªæ¬¡ã®æé ãå¿ èŠã§ããããããæ··åãããšãå éšæ å ±ã®æŒæŽ©ïŒæ å ±ãåºãéããïŒããç¡æå³ãªã¡ãã»ãŒãžïŒäœãèŠããªãïŒã«é¥ããã¡ã§ãã
ããã§APIãšã©ãŒå¥çŽã®åºçªã§ããç®çã¯ããšã©ãŒãå¢ããããšãã§ã¯ãªããæ¬¡ã®ããšãã§ããäžè²«ããæ§é ãæäŸããããšã§ã:
- ã¯ã©ã€ã¢ã³ãããšã³ããã€ã³ãéã§ä¿¡é ŒããŠå€±æãè§£éã§ãã
- ãŠãŒã¶ãŒã¯å®å šã§å¹³æãªèšèã®ã¡ãã»ãŒãžãèŠãŠåŸ©æ§ã§ãã
- ãµããŒããQAãå®å®ããã³ãŒãã§åé¡ãç¹å®ã§ãã
- ãšã³ãžãã¢ã¯æ©å¯ãæããã«èšºææ å ±ãåŸããã
äžè²«æ§ãå
šãŠã§ãããããããšã³ããã€ã³ãã error: "Invalid" ãè¿ããå¥ã message: "Bad request" ãè¿ããªããUIã¯ãŠãŒã¶ãŒãå°ãããããŒã ã¯äœãèµ·ããŠãããæž¬ããŸãããæç¢ºãªå¥çŽã¯ãšã©ãŒãäºæž¬å¯èœãæ€çŽ¢å¯èœãä¿®æ£ããããããŸãâåºç€ãšãªãåå ãå€ãã£ãŠãã
äžè²«ãããšã©ãŒå¥çŽãå®åã§æå³ããããš
APIãšã©ãŒå¥çŽã¯çŽæã§ã: äœãã倱æãããšããã©ã®ãšã³ããã€ã³ãã倱æããŠããAPIã¯éŠŽæã¿ãã圢ã§äºæž¬å¯èœãªãã£ãŒã«ããšã³ãŒããè¿ããšã
ããã¯ãããã°çšã®ãã³ãã§ããã°ã®ä»£æ¿ã§ããããŸãããå¥çŽã¯ã¯ã©ã€ã¢ã³ãã¢ããªãå®å šã«é Œãããã®ã§ããã¹ã¿ãã¯ãã¬ãŒã¹ãSQLã®è©³çŽ°ãæ©å¯æ å ±ã¯ãã°ã«çœ®ããŸãã
å®åã§ã¯ãå ç¢ãªå¥çŽã¯æ¬¡ã®ç¹ãå®å®ãããŸã: ãšã³ããã€ã³ãéã§ã®ã¬ã¹ãã³ã¹åœ¢ïŒ4xx/5xxåããïŒãæå³ãå€ãããªãæ©æ¢°å¯èªã®ãšã©ãŒã³ãŒããå®å šãªãŠãŒã¶ãŒåãã¡ãã»ãŒãžãããã«ãµããŒãã®ããã«ãªã¯ãšã¹ã/ãã¬ãŒã¹èå¥åãå«ãããŠãŒã¶ãŒã«ãšã£ãŠåœ¹ç«ã€ç°¡åãªUIãã³ãïŒå詊è¡ããã¹ããããã£ãŒã«ããçŽãã¹ããïŒãæž¡ããŸãã
äžè²«æ§ã¯ã©ãã§åŒ·å¶ããããæ±ºããªããšæ©èœããŸãããããŒã ã¯éåžžã1ç®æããå§ããŠåŸã ã«åºããŸã: ãšã©ãŒãæ£èŠåããAPIã²ãŒããŠã§ã€ãæªåŠçã®å€±æãã©ããããããã«ãŠã§ã¢ãåããšã©ãŒãªããžã§ã¯ããäœãå ±éã©ã€ãã©ãªããããã¯åãµãŒãã¹ã®ãã¬ãŒã ã¯ãŒã¯ã¬ãã«ã®äŸå€ãã³ãã©ãªã©ã
æåŸ ããããŒã¯ã·ã³ãã«ã§ã: ãã¹ãŠã®ãšã³ããã€ã³ãã¯æå圢ãããããã¯ãããã倱æã¢ãŒãã«å¯ŸããŠãšã©ãŒå¥çŽãè¿ãããšãããã«ã¯æ€èšŒãšã©ãŒãèªèšŒå€±æãã¬ãŒãå¶éãã¿ã€ã ã¢ãŠããäžæµé害ãå«ãŸããŸãã
ã¹ã±ãŒã«ããã·ã³ãã«ãªãšã©ãŒå¿ç圢
è¯ãAPIãšã©ãŒå¥çŽã¯å°ãããäºæž¬å¯èœã§ã人ãšãœãããŠã§ã¢ã®äž¡æ¹ã«åœ¹ç«ã¡ãŸããã¯ã©ã€ã¢ã³ããåžžã«åããã£ãŒã«ããèŠã€ããããã°ããµããŒãã¯æšæž¬ããããUIã¯ããæç¢ºã«å©ããåºããŸãã
ã»ãšãã©ã®ãããã¯ãã§æ©èœããæå°éã®JSONåœ¢ã¯æ¬¡ã®ãããªãã®ã§ã:
{
"status": 400,
"code": "AUTH.INVALID_EMAIL",
"message": "Enter a valid email address.",
"details": {
"fields": {
"email": "invalid_email"
},
"action": "fix_input",
"retryable": false
},
"trace_id": "01HZYX8K9Q2..."
}
å¥çŽãå®å®ãããããã«ãåéšåãå¥åã®çŽæãšããŠæ±ã£ãŠãã ãã:
statusã¯HTTPã®æ¯ãèããšå€§ãŸããªã«ããŽãªã®ãããcodeã¯å®å®ããæ©æ¢°å¯èªã®èå¥åïŒAPIãšã©ãŒå¥çŽã®æ žïŒãmessageã¯å®å šãªUIçšããã¹ãïŒåŸã§ããŒã«ã©ã€ãºã§ãããã®ïŒãdetailsã¯æ§é åããããã³ããä¿æ: ãã£ãŒã«ãããšã®åé¡ã次ã«ãã¹ãããšãå詊è¡ã®å¯åŠãtrace_idã¯ãµããŒãããµãŒããŒåŽã®æ£ç¢ºãªå€±æãèŠã€ããããã®æãããã
ãŠãŒã¶ãŒåãã®å
容ã¯å
éšãããã°æ
å ±ãšåãé¢ããŠãã ããã远å ã®èšºæãå¿
èŠãªããtrace_id ãããŒã«ãµãŒããŒåŽã§ãã°ã«æ®ããŠãã ããïŒã¬ã¹ãã³ã¹ã«ã¯å
¥ããªãïŒãããããã°æ©å¯æ
å ±ã®æŒæŽ©ãé¿ãã€ã€èª¿æ»ã容æã«ãªããŸãã
ãã£ãŒã«ããšã©ãŒã®å Žåãdetails.fields ã¯ã·ã³ãã«ãªãã¿ãŒã³ã§ã: ããŒã¯å
¥ååã«å¯Ÿå¿ããå€ã¯ invalid_email ã too_short ã®ãããªçãçç±ãæãããŸããã¿ã€ã ã¢ãŠãã«ã¯ action: "retry_later" ãååãªããšããããŸããäžæçãªé害ã«ã¯ retryable: true ãè¿ããšã¯ã©ã€ã¢ã³ãã¯å詊è¡ãã¿ã³ã衚瀺ããã倿ã§ããŸãã
å®è£
åã®æ³šæ: äžéšããŒã ã¯ãšã©ãŒã error ãªããžã§ã¯ãã§ã©ããããŸãïŒäŸ: { "error": { ... } }ïŒãä»ã¯ãããã¬ãã«ã«ãã£ãŒã«ãã眮ããŸããã©ã¡ãã§ãæ§ããŸãããéèŠãªã®ã¯ã©ããäžã€ã®ãšã³ãããŒããéžã³ãã©ãã§ãäžè²«ããŠäœ¿ãããšã§ãã
ã¯ã©ã€ã¢ã³ããå£ããªãå®å®ãããšã©ãŒã³ãŒãã®ãã¿ãŒã³
å®å®ãããšã©ãŒã³ãŒãã¯APIãšã©ãŒå¥çŽã®è骚ã§ããæèšãå€ãããããã£ãŒã«ãã远å ããããUIãæ¹åããŠããã¢ããªãããã·ã¥ããŒãããµããŒããåãåé¡ãèªèã§ããŸãã
å®çšçãªåœåèŠåã¯:
DOMAIN.ACTION.REASON
äŸ: AUTH.LOGIN.INVALID_PASSWORD, BILLING.PAYMENT.CARD_DECLINED, PROFILE.UPDATE.EMAIL_TAKENããã¡ã€ã³ã¯å°ãã芪ãã¿ãããä¿ã¡ãŸãïŒAUTH, BILLING, FILESïŒãåè©ã¯æç¢ºã«èªãããã®ã䜿ããŸãïŒCREATE, UPDATE, PAYïŒã
ã³ãŒãã¯ãšã³ããã€ã³ããšåãæ±ããããŠãã ãã: äžåºŠå ¬éãããæå³ãå€ããŠã¯ãããŸããããŠãŒã¶ãŒã«èŠããæèšã¯æ¹åããŠããïŒããŒã³ãæé ãèšèªã®è¿œå ïŒããã³ãŒãã¯åãã§ããã¹ãã§ãããããããšã¯ã©ã€ã¢ã³ãã¯å£ãããåæãã¯ãªãŒã³ã§ãã
å ¬éçšã³ãŒããšå éšå°çšã³ãŒããåãããæ±ºããã®ãéèŠã§ããç°¡åãªã«ãŒã«ã¯: å ¬éã³ãŒãã¯è¡šç€ºããŠå®å šã§ãå®å®ããææžåããUIã§äœ¿ãããã®ãå éšã³ãŒãã¯ãã°ããããã°çšïŒããŒã¿ããŒã¹åããã³ããŒè©³çްãã¹ã¿ãã¯æ å ±ïŒãããå ¬éã³ãŒããå€ãã®å éšåå ã«ããããããããšã¯ãããããŸãã
éæšå¥šåã¯éå±ãªããæ¹ããã¹ãã§ããã³ãŒãã眮ãæããªããšãããªãå Žåã¯ãå€ãã³ãŒããå¥ã®æå³ã§åå©çšããªãã§ãã ãããæ°ããã³ãŒããå°å
¥ããå€ããã®ã¯éæšå¥šã«ããŸããéè€æéãèšããŠäž¡æ¹åºãããã«ãããšå®å
šã§ããdeprecated_by ã®ãããªãã£ãŒã«ããå
¥ãããªããæ°ã³ãŒããæãããã«ããŠãã ããïŒURLã§ã¯ãªãã³ãŒããæãïŒã
ããšãã°ãBILLING.PAYMENT.CARD_DECLINED ãæ®ãã€ã€ãUIæèšãæ¹åããŠãå¥ã®ã«ãŒãã詊ããvsãéè¡ã«é£çµ¡ãããã«åããŠããã³ãŒãã¯å€ããã«ã¬ã€ãã³ã¹ã ãé²åãããããšããéçšãåççã§ãã
äžè²«æ§ã倱ããªãããŒã«ã©ã€ãº
APIãå šæãè¿ããã¯ã©ã€ã¢ã³ãããããããžãã¯ãšããŠæ±ããšããŒã«ã©ã€ãºã¯ããããããªããŸããããè¯ãæ¹æ³ã¯ãå¥çŽãå®å®ãããŠæçµè¡šç€ºã®æèšã ãã翻蚳ããããšã§ããããããã°ãåããšã©ãŒã¯èšèªãããã€ã¹ãã¢ããªã®ããŒãžã§ã³ã«ãããããåãæå³ãæã¡ãŸãã
ãŸã翻蚳ã®ä¿ç®¡å Žæãæ±ºããŸããwebãmobileããµããŒãããŒã«ã§1ã€ã®çå®ãå¿
èŠãªããµãŒããŒåŽã®ã¡ãã»ãŒãžã圹ç«ã¡ãŸããUIãããŒã³ãã¬ã€ã¢ãŠãã现ããå¶åŸ¡ããããªãã¯ã©ã€ã¢ã³ãåŽã®ç¿»èš³ãæ±ããããã§ããå€ãã®ããŒã ã¯ãã€ããªããã䜿ããŸã: APIã¯å®å®ããã³ãŒããš message_key ãšãã©ã¡ãŒã¿ãè¿ããã¯ã©ã€ã¢ã³ããé©åãªè¡šç€ºæãéžã³ãã©ãŒãããããŸãã
APIãšã©ãŒå¥çŽã§ã¯ãmessage keys ãããŒãã³ãŒãã®æç« ããå®å
šã§ããAPIã message_key: "auth.too_many_attempts" ãš params: {"retry_after_seconds": 300} ãè¿ããUIãèš³ããŠè¡šç€ºããã°æå³ã¯å€ãããŸããã
è€æ°åœ¢ãšãã©ãŒã«ããã¯ã¯äººã
ãæãããéèŠã§ãããã±ãŒã«æ¯ã®è€æ°åœ¢ã«ãŒã«ããµããŒãããi18nã»ããã¢ããã䜿ãããã©ãŒã«ããã¯ãã§ãŒã³ïŒäŸ: fr-CA -> fr -> enïŒãå®çŸ©ããŠæ¬ èœæã«ç©ºçœè¡šç€ºã«ãªããªãããã«ããŠãã ããã
翻蚳ãããããã¹ãã¯å³å¯ã«ãŠãŒã¶ãŒåããšããã®ãè¯ãã¬ãŒãã¬ãŒã«ã§ããã¹ã¿ãã¯ãã¬ãŒã¹ãå éšIDãçã®å€±æçç±ãããŒã«ã©ã€ãºæååã«å ¥ããªãã§ãã ãããæ©å¯æ å ±ã¯è¡šç€ºããªããã£ãŒã«ãïŒãŸãã¯ãã°ïŒã«å ¥ãããŠãŒã¶ãŒã«ã¯å®å šã§è¡åå¯èœãªæèšã ããæç€ºããŸãã
ããã¯ãšã³ãã®å€±æããŠãŒã¶ãŒãå®è¡ã§ããUIãã³ãã«å€ãã
å€ãã®ããã¯ãšã³ããšã©ãŒã¯ãšã³ãžãã¢ã«æçšã§ããããã°ãã°ãäœããããŸããããªãã£ãããšç»é¢ã«åºãŸããè¯ããšã©ãŒå¥çŽã¯ãææãªè©³çްãåºããã«å€±æãæç¢ºãªæ¬¡æé ã«å€æããŸãã
åçŽãªæ¹æ³ã¯ã倱æããŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ã«ãããããããšã§ã: å ¥åãä¿®æ£ãããå詊è¡ããããµããŒãã«é£çµ¡ããããã®äžã€ã«åé¡ãããšãããã¯ãšã³ãã®å€ãã®å€±æããŠã§ããšã¢ãã€ã«ã§äžè²«ããŠæ±ããŸãã
- ä¿®æ£: æ€èšŒå€±æããã©ãŒãããäžæ£ãå¿ é é ç®ããªãã
- å詊è¡: ã¿ã€ã ã¢ãŠããäžæçãªäžæµåé¡ãã¬ãŒãå¶éã
- ãµããŒãé£çµ¡: æš©éã®åé¡ããŠãŒã¶ãŒåŽã§è§£æ±ºã§ããªãç«¶åãäºæããªãå éšãšã©ãŒã
ãã£ãŒã«ãã®ãã³ãã¯é·ãã¡ãã»ãŒãžããéèŠã§ããããã¯ãšã³ããã©ã®å
¥åã倱æãããåãã£ãŠãããªããæ©æ¢°å¯èªãªãã€ã³ã¿ïŒäŸ: email ã card_numberïŒãšUIãã€ã³ã©ã€ã³è¡šç€ºã§ããçãçç±ãè¿ããŠãã ãããè€æ°ã®ãã£ãŒã«ãã誀ã£ãŠãããªãå
šãŠè¿ããäžåºŠã«çŽããããã«ããŸãã
ç¶æ³ã«åãããŠUIãã¿ãŒã³ãåããããšè¯ãã§ããããŒã¹ãã¯äžæçãªå詊è¡ã¡ãã»ãŒãžã«é©åã§ããå ¥åãšã©ãŒã¯ã€ã³ã©ã€ã³ãã¢ã«ãŠã³ããæ¯æãã®ãããã«ãŒã¯ã¢ãŒãã«ã§ããããã³ã°ãããªã©ã
äžè²«ããŠå®å
šãªãã©ãã«ã·ã¥ãŒãã£ã³ã°æ
å ±ãå«ããŠãã ãã: trace_idãæ¢ã«ãããªãã¿ã€ã ã¹ã¿ã³ããæšå¥šãããæ¬¡æé ïŒå詊è¡ã®é
å»¶ãªã©ïŒãããããããšã§ãæ¯æããããã€ãã®ã¿ã€ã ã¢ãŠãã¯ãæ¯æããµãŒãã¹ãé
ããŠããŸããããäžåºŠã詊ããã ããããšå詊è¡ãã¿ã³ã衚瀺ã§ãããµããŒãã¯åã trace_id ã䜿ã£ãŠãµãŒããŒåŽã®è©³çްã調ã¹ãããŸãã
ã¹ããããã€ã¹ããã: å¥çŽããšã³ãããŒãšã³ãã§å±éãã
APIãšã©ãŒå¥çŽã®å°å ¥ã¯ãªãã¡ã¯ã¿ã§ã¯ãªãå°ããªãããã¯ã倿ŽãšããŠæ±ããšæåããããã§ããæ®µéçã«é²ãããµããŒããUIããŒã ãæ©ãã«å·»ã蟌ã¿ãŸãã
ãŠãŒã¶ãŒåãã¡ãã»ãŒãžãæ©ãæ¹åãã€ã€ã¯ã©ã€ã¢ã³ããå£ããªãå°å ¥æé ã®äžäŸ:
- çŸç¶ã®æ£åžãïŒãã¡ã€ã³å¥ã«ã°ã«ãŒãã³ã°ïŒ: ãã°ããå®éã®ãšã©ãŒå¿çããšã¯ã¹ããŒãããauthãsignupãbillingãfile uploadãpermissions ãªã©ã§åé¡ããŸããç¹°ãè¿ããäžæçãªã¡ãã»ãŒãžãåã倱æãè€æ°åœ¢ã§çŸããŠããªãããæ¢ããŸãã
- ã¹ããŒããå®çŸ©ãäŸãå ±æãã: ã¬ã¹ãã³ã¹åœ¢ãå¿ é ãã£ãŒã«ãããã¡ã€ã³å¥ã®äŸãææžåããŸããå®å®ããã³ãŒãåãããŒã«ã©ã€ãºçšã®ã¡ãã»ãŒãžããŒãUIåãã®ãªãã·ã§ã³ãã³ããå«ããŸãã
- äžå€®ã®ãšã©ãŒããããŒãå®è£ ãã: ãã©ãŒããããäžç®æã«ãŸãšãããã¹ãŠã®ãšã³ããã€ã³ããåãæ§é ãè¿ãããã«ããŸããçæãããããã¯ãšã³ããããŒã³ãŒãç°å¢ã§ã¯ãéåžžããšã©ãŒãã¬ã¹ãã³ã¹ã«ããããããå ±éã¹ããããå šãŠã®ãšã³ããã€ã³ããæ¥åããã»ã¹ã§åŒã¶èšèšã«ãªããŸãã
- UIãæŽæ°ããŠã³ãŒããè§£éããã³ãã衚瀺ãã: UIã¯ã¡ãã»ãŒãžæèšã§ã¯ãªãã³ãŒãã«äŸåããããã«ããŸããã³ãŒãã«åºã¥ããŠãã£ãŒã«ãããã€ã©ã€ãããããå詊è¡ã¢ã¯ã·ã§ã³ãåºããããµããŒããžæ¡å ãããã倿ããŸãã
- ãã®ã³ã°ãštrace_idã远å ãã: åãªã¯ãšã¹ãã«trace_idãçæãããµãŒããŒåŽã«çã®å€±æè©³çްããã°ã«æ®ãããšã©ãŒå¿çã«è¿ããŠãŠãŒã¶ãŒãã³ããŒã§ããããã«ããŸãã
æåã®ãã¹ã®åŸã¯ã軜éãªææç©ã§å¥çŽãå®å®ãããŸã: ãã¡ã€ã³å¥ã®ãšã©ãŒã³ãŒãã«ã¿ãã°ãããŒã«ã©ã€ãºçšã®ç¿»èš³ãã¡ã€ã«ãã³ãŒã -> UIãã³ã/次ã¢ã¯ã·ã§ã³ã®ç°¡åãªãããã³ã°è¡šããããŠãtrace_idãæ·»ããŠéã£ãŠãã ããããšãããµããŒãçšãã¬ã€ããã¯ãªã©ã
ã¬ã¬ã·ãŒã¯ã©ã€ã¢ã³ããããå Žåã¯çæéã ãå€ããã£ãŒã«ããæ®ããæ°ããäž-off圢ã¯ããã«äœããªãããã«ããŸãã
ãµããŒããã«ãããããããããã¹
å€ãã®ãµããŒãè² è·ã¯ãæªããŠãŒã¶ãŒãããæ¥ãã®ã§ã¯ãªããææ§ãããæ¥ãŸããAPIãšã©ãŒå¥çŽãäžè²«ããŠããªããšãåããŒã ãç¬èªè§£éãäœãããŠãŒã¶ãŒã¯è¡åã§ããªãã¡ãã»ãŒãžã«æ©ãŸãããŸãã
ããããèœãšã穎ã®äžã€ã¯HTTPã¹ããŒã¿ã¹ã³ãŒãã ããå
šãŠãšèŠãªãããšã§ãã400ã500ã¯ãŠãŒã¶ãŒã次ã«äœããã¹ããã«ã€ããŠã»ãšãã©äœãæããŠãããŸãããã¹ããŒã¿ã¹ã³ãŒãã¯èŒžéãšå€§æ ã®åé¡ã«åœ¹ç«ã¡ãŸãããæå³ãæã¡ç¶ããå®å®ããã¢ããªã¬ãã«ã®ã³ãŒããå¿
èŠã§ãã
å¥ã®ãã¹ã¯ã³ãŒãã®æå³ãæéãšãšãã«å€ããããšã§ããPAYMENT_FAILED ã以åã¯ãã«ãŒãæåŠããæå³ããŠããã®ã«åŸã§ãStripeãèœã¡ãŠãããã«ãªã£ãããUIãšããã¥ã¡ã³ãã¯ééã£ããŸãŸã«ãªããŸãããµããŒãã«ã¯ã3æè©Šãããå
šéšå€±æããããšãããã±ãããæ¥ãŠãæ¬åœã®åå ã¯é害ã ã£ãããšããäºæ
ã«ãªããŸãã
çã®äŸå€ããã¹ãïŒãããã¯ã¹ã¿ãã¯ãã¬ãŒã¹ïŒãè¿ãã®ã¯ææ©ãã§ããããŠãŒã¶ãŒã«ã¯ã»ãšãã©åœ¹ã«ç«ããå éšæ å ±ãæŒããããšããããŸããçã®èšºææ å ±ã¯ã¬ã¹ãã³ã¹ã§ã¯ãªããã°ã«æ®ããŸãããã
ãã€ãºãçããã¿ãŒã³ã®äŸ:
UNKNOWN_ERRORã®ãããªäžèœã³ãŒããæ¿«çšãããšãŠãŒã¶ãŒãå°ããªããªãã- æç¢ºãªåé¡ããªããŸãŸã³ãŒãã倧éã«äœããšããã·ã¥ããŒãããã¬ã€ããã¯ãç¶æã§ããªããªãã
- ãŠãŒã¶ãŒåãããã¹ããšéçºè åã蚺æãåããã£ãŒã«ãã«æ··ãããšããŒã«ã©ã€ãºãUIãã³ããå£ãããããªãã
ã·ã³ãã«ãªã«ãŒã«: ãŠãŒã¶ãŒã®å€æäžã€ã«ã€ãäžã€ã®å®å®ã³ãŒãããŠãŒã¶ãŒãå ¥åãå€ããã°çŽããªãå ·äœçãªã³ãŒããšæç¢ºãªãã³ããããŠãŒã¶ãŒåŽã§çŽããªãïŒãããã€ãé害ãªã©ïŒãªãå®å®ããã³ãŒããè¿ããå®å šãªã¡ãã»ãŒãžãšå詊è¡ãçžé¢IDãè¿ããŸãã
ãªãªãŒã¹åã®ã¯ã€ãã¯ãã§ãã¯ãªã¹ã
åºè·åã«ãšã©ãŒããããã¯ãæ©èœãšããŠæ±ã£ãŠãã ããã倱æãããšãããŠãŒã¶ãŒã¯æ¬¡ã«äœããã¹ããåããããµããŒãã¯äºè±¡ãç¹å®ã§ããããã¯ãšã³ããå€ãã£ãŠãã¯ã©ã€ã¢ã³ãã¯å£ããªãã¹ãã§ãã
- ã©ãã§ãåã圢: ãã¹ãŠã®ãšã³ããã€ã³ãïŒauthãwebhooksããã¡ã€ã«ã¢ããããŒããå«ãïŒãäžè²«ãããšã©ãŒãšã³ãããŒããè¿ãã
- å®å®ãããªãŒããŒä»ãã³ãŒã: åã³ãŒãã«æç¢ºãªæ åœïŒPaymentsãAuthãBillingïŒãç°ãªãæå³ã§åå©çšããªãã
- å®å šã§ç¿»èš³å¯èœãªã¡ãã»ãŒãž: ãŠãŒã¶ãŒåãããã¹ãã¯çããæ©å¯ïŒããŒã¯ã³ãã«ãŒãæ å ±ãSQLãã¹ã¿ãã¯ãã¬ãŒã¹ïŒãå«ããªãã
- æç¢ºãªUI次ã¢ã¯ã·ã§ã³: äžäœã®å€±æã¿ã€ãããšã«UIãäžã€ã®æçœãªæ¬¡æé ïŒå詊è¡ããã£ãŒã«ãæŽæ°ãå¥ã®æ¯æãæ¹æ³ããµããŒãé£çµ¡ïŒã瀺ãã
- ãµããŒãã®è¿œè·¡æ§: ãã¹ãŠã®ãšã©ãŒå¿çã«
trace_idïŒãŸãã¯é¡äŒŒïŒãå«ãŸãããµããŒãããããæ±ããŠãã°ã§å®å šãªäºè±¡ãèŠã€ããããããšã
ããã€ãã®çŸå®çãªãããŒã§ãšã³ãããŒãšã³ãã®ãã¹ããè¡ã£ãŠãã ãã: ç¡å¹ãªå
¥åã®ãããã©ãŒã ãæéåãã®ã»ãã·ã§ã³ãã¬ãŒãå¶éããµãŒãããŒãã£é害ã倱æãäžæã§èª¬æã§ããããã°å
ã§æ£ç¢ºãª trace_id ã«ãã©ãçããªããªãåºè·æºåã¯ã§ããŠããŸããã
äŸ: ãŠãŒã¶ãŒã埩æ§ã§ãããµã€ã³ã¢ãããšæ¯æãã®å€±æ
è¯ãAPIãšã©ãŒå¥çŽã¯åã倱æããŠã§ããã¢ãã€ã«ãèªåã¡ãŒã«ã®äžç®æã§çè§£å¯èœã«ããŸãããµããŒãã¯è©³çްãå°ããã«å©ãããããŠãŒã¶ãŒã¯ç»é¢ã®æç€ºã§çŽããŸãã
ãµã€ã³ã¢ãã: ãŠãŒã¶ãŒãä¿®æ£ã§ããæ€èšŒãšã©ãŒ
ãŠãŒã¶ãŒã sam@ ã®ãããªã¡ãŒã«ãå
¥ããŠãµã€ã³ã¢ãããããšãAPIã¯å®å®ããã³ãŒããšãã£ãŒã«ãã¬ãã«ã®ãã³ããè¿ããŸãããã¹ãŠã®ã¯ã©ã€ã¢ã³ããåãå
¥åããã€ã©ã€ãã§ããŸãã
{
"error": {
"code": "AUTH.EMAIL_INVALID",
"message": "Enter a valid email address.",
"i18n_key": "auth.email_invalid",
"params": { "field": "email" },
"ui": { "field": "email", "action": "focus" },
"trace_id": "4f2c1d..."
}
}
Webã§ã¯ã¡ãŒã«æ¬ã®äžã«ã¡ãã»ãŒãžã衚瀺ããŸããã¢ãã€ã«ã§ã¯ã¡ãŒã«ãã£ãŒã«ãã«ãã©ãŒã«ã¹ããŠå°ããªãããŒãåºããŸããã¡ãŒã«æé¢ã§ã¯ãã¡ãŒã«ã¢ãã¬ã¹ãäžå®å šãªããã¢ã«ãŠã³ããäœæã§ããŸããã§ããããšäŒããããŸããåãã³ãŒããåãæå³ã§ãã
æ¯æã: å®å šãªèª¬æã§ã®å€±æ
ã«ãŒãæ¯æãã倱æããå ŽåããŠãŒã¶ãŒã¯æ¡å ãå¿ èŠã§ããããã»ããµã®å éšã¯èŠããŠã¯ãããŸãããå¥çŽã¯ãŠãŒã¶ãŒãèŠããã®ãšãµããŒããæ€èšŒããæ å ±ãåããããŸãã
{
"error": {
"code": "PAYMENT.DECLINED",
"message": "Your payment was declined. Try another card or contact your bank.",
"i18n_key": "payment.declined",
"params": { "retry_after_sec": 0 },
"ui": { "action": "show_payment_methods" },
"trace_id": "b9a0e3..."
}
}
ãµããŒã㯠trace_id ãåãåãããè¿ãããå®å®ã³ãŒããäœããæåŠãå詊è¡å¯èœãæçµçããã©ã®ã¢ã«ãŠã³ããšéé¡ã®è©Šè¡ã ã£ãããUIãã³ããéããããã確èªã§ããŸãã
ããã§APIãšã©ãŒå¥çŽã®äŸ¡å€ãåºãŸã: ããã¯ãšã³ããããã€ããå éšã®å€±æè©³çްãå€ãã£ãŠããWebãiOS/Androidãã¡ãŒã«ã®ãããŒã¯äžè²«æ§ãä¿ãŠãŸãã
å¥çŽãæéããããŠãã¹ããšç£èŠãã
APIãšã©ãŒå¥çŽã¯åºè·ããŠçµããã§ã¯ãããŸãããæ°ãæã®ãªãã¡ã¯ã¿ãæ©èœè¿œå ã®åŸã§ãåããšã©ãŒã³ãŒããåããŠãŒã¶ãŒè¡åã«ã€ãªããããã«ä¿ã€ããšãå®äºã§ãã
å€åŽããã®ãã¹ããæåã«è¡ã£ãŠãã ããããµããŒãããåãšã©ãŒã³ãŒãã«ã€ããŠå°ãªããšã1ã€ããã®ã³ãŒããåŒãèµ·ãããªã¯ãšã¹ããæžããå®éã«äŸåããŠããæ¯ãèããã¢ãµãŒãããŸã: HTTPã¹ããŒã¿ã¹ãcodeãããŒã«ã©ã€ãºããŒãUIãã³ããã£ãŒã«ãïŒã©ã®ãã©ãŒã ãã£ãŒã«ãããã€ã©ã€ããããïŒãªã©ã
å°ããªãã¹ãã»ããã§å€§åã®ãªã¹ã¯ã¯ã«ããŒã§ããŸã:
- åãšã©ãŒã±ãŒã¹ã®é£ã«1ã€ã®ããããŒãã¹ãªã¯ãšã¹ãïŒéå°æ€èšŒãæ€åºããããïŒ
- åå®å®ã³ãŒãã«å¯Ÿãã1ã€ã®ãã¹ãã§è¿ãããUIãã³ãããã£ãŒã«ããããã³ã°ã確èª
- æªç¥ã®å€±æãå®å šãªæ±çšã³ãŒããè¿ãããšãä¿èšŒãããã¹ã
- å察å¿èšèªã«å¯ŸããŠããŒã«ã©ã€ãºããŒãååšããããšã確èªãããã¹ã
- æ©å¯æ å ±ãã¯ã©ã€ã¢ã³ãã¬ã¹ãã³ã¹ã«çŸããªãããšã確èªãããã¹ã
ç£èŠã¯ãã¹ããèŠéãååž°ãæãŸããŸãããšã©ãŒã³ãŒãã®ä»¶æ°ãæéã§è¿œè·¡ããæ¥å¢ãã¢ã©ãŒãããŸãïŒäŸ: ãªãªãŒã¹åŸã«ããæ¯æãã³ãŒããåå¢ãããèŠå ±ïŒãæ¬çªã§æ°ããã³ãŒããåºçŸãããç£èŠããŠãã ãããããã¥ã¡ã³ããããŠããªãã³ãŒããåºããå¥çŽãè¿åãããå¯èœæ§ããããŸãã
äœãã¯ã©ã€ã¢ã³ãã«åºããæ©ãã«æ±ºããŠãã ãããå®çšçãªåãæ¹ã¯: ã¯ã©ã€ã¢ã³ãã«ã¯å®å®ã³ãŒããããŒã«ã©ã€ãºããŒããŠãŒã¶ãŒã¢ã¯ã·ã§ã³ãã³ããæž¡ãããã°ã«ã¯çã®äŸå€ãã¹ã¿ãã¯ãã¬ãŒã¹ããªã¯ãšã¹ãIDãäŸåå ã®å€±æïŒDBãæ¯æããããã€ããã¡ãŒã«ã²ãŒããŠã§ã€ïŒãæ®ããã§ãã
æã«äžåºŠã¯å®éã®ãµããŒãäŒè©±ã䜿ã£ãŠãšã©ãŒãã¬ãã¥ãŒããŠãã ãããããªã¥ãŒã äžäœ5ã€ã®ã³ãŒããéžã³ãããããã®ãã±ããããã£ãããã°ãããã€ãèªã¿ãŸãããŠãŒã¶ãŒãåã远å 質åãç¹°ãè¿ããªããUIãã³ããè¶³ããªããã¡ãã»ãŒãžããããŸãã§ãã
次ã®ã¹ããã: ããªãã®ãããã¯ããšã¯ãŒã¯ãããŒã«ãã¿ãŒã³ãé©çšãã
æ··ä¹±ãæãã³ã¹ããçãå ŽæïŒéåžžã¯ãµã€ã³ã¢ããããã§ãã¯ã¢ãŠãããã¡ã€ã«ã¢ããããŒãïŒããã±ãããæãçããšã©ãŒããçæããŠãã ããããŸãããããæšæºåããããšã§ãã¹ããªã³ãå ã§ã€ã³ãã¯ããèŠããŸãã
å®çšçãªããŒãªã³ã°ãã©ãŒã«ã¹ã®æ¹æ³:
- ãµããŒããæãåŒãèµ·ããäžäœ10ã®ãšã©ãŒãéžã³ãå®å®ã³ãŒããšå®å šãªããã©ã«ããå²ãåœãŠã
- ã³ãŒã -> UIãã³ã -> 次ã¢ã¯ã·ã§ã³ã®ãããã³ã°ãåãµãŒãã§ã¹ïŒwebãmobileãadminïŒããšã«å®çŸ©ãã
- æ°ãããšã³ããã€ã³ãã«ã¯å¥çŽãããã©ã«ãã«ããæ¬ ããŠãããã£ãŒã«ãã¯ã¬ãã¥ãŒã®å€±æãšãã
- å°ããªå éšãã¬ã€ããã¯ãæã€: åã³ãŒããäœãæå³ãããããµããŒããäœãæ±ãããã誰ãä¿®æ£ãæ åœããã
- 远跡ããã¡ããªã¯ã¹ãããã€ã: ã³ãŒãå¥ãšã©ãŒçã"unknown error" ã®æ°ãåã³ãŒãã«çŽã¥ããã±ããé
AppMaster (appmaster.io) ã§æ§ç¯ããŠããå Žåã¯ããããæ©ãã«çµã¿èŸŒã䟡å€ããããŸã: ãšã³ããã€ã³ãã®äžè²«ãããšã©ãŒåœ¢ãå®çŸ©ããWebãã¢ãã€ã«ç»é¢ã§å®å®ã³ãŒããUIã¡ãã»ãŒãžã«ãããããŠãã©ãã§ãåãæå³ããŠãŒã¶ãŒã«äžããŸãã
ç°¡åãªäŸ: ãµããŒãããæ¯æãã倱æããããšããèŠæ
ãåããå Žåãæšæºåããããšã§UIã¯1ã€ã®ã³ãŒãã«å¯ŸããŠãã«ãŒããæåŠãããããšè¡šç€ºããŠå¥ã®ã«ãŒãã詊ããã³ããåºããå¥ã®ã³ãŒãã§ã¯ãæ¯æãã·ã¹ãã ãäžæçã«å©çšã§ããŸããããšè¡šç€ºããŠå詊è¡ã¢ã¯ã·ã§ã³ãåºããŸãããµããŒã㯠trace_id ãæ±ããã ãã§æžã¿ãŸãã
宿çãªæŽåãã«ã¬ã³ããŒã«å ¥ããŠãã ããã䜿ãããŠããªãã³ãŒãã廿¢ãããããŸããªã¡ãã»ãŒãžãçµããå®éã«ããªã¥ãŒã ã®ããç®æã«ããŒã«ã©ã€ãºã远å ããŸããå¥çŽã¯å®å®ããã€ã€ãããã¯ãã¯é²åã§ããŸãã


