取引登録APIでリトライ処理を行った際のべき等性担保の方法
https://api.smaregi.dev/{契約ID}/pos/transactions
上記、取引き登録APIに関して、 transactionUuid
が重複した場合エラーが返るようになっていると思います。
売上データを登録するときに、ネットワーク切断などが発生した場合、リトライ処理を行おうと思っているのですが、すでに登録済みの取引きかどうかを判定するにはどのようにするのがよいでしょうか?
重複時のエラーは
{ "type":"about:blank", "title":"Bad Request", "detail":"指定されたレシート番号は既に登録済みです。", "status": 400 }
の様になっていると思いますが、重複エラーの識別に使えそうな情報が detail
の日本語文字列しかありません。
APIの仕様にこの文字列は表記されていないため、今後この文字列が変更されないことは保証されていないと思っています。
detail
以外の情報を使って重複エラーを検知する方法はありませんか?あるいは detail
の文字列は互換性が保証されていますか?
もし、エラーを識別できるような情報が含まれていないのであれば、type
を使ったり、別のフィールドをJSONに生やすなどして機械的に処理ができるようにしていただけると幸いです。
答え
@morikuni
detail 以外の情報を使って重複エラーを検知する方法はありませんか?
リトライの際に、重複エラーを検知することは難しいかと存じます。
あるいは detail の文字列は互換性が保証されていますか?
保証することは出来かねます。
代替案としてお伝えできることは、取引一覧取得APIを利用して登録できているか確認する方法になります。