2017-12-29 52 views
0

REST APIデザインに関する質問があります。REST API - 別のAPI内で複数のAPIを呼び出せますか?内部API呼び出しの1つが失敗するとどうなりますか?

特定の動作を持つ複数のREST APIがあります。リタイヤした状態などを変更する前に車両に現在賃料の予約があるかどうかを確認するための検証を行う車両状態の更新(例えば、利用可能、レンタル、メンテナンス、リタイア)。もう1つは、車両がレンタルから返却されると、車両状態に関する一般的なコメントが記録されます。また、車両の使用を終了する(例えば、寿命が終了する)もう1つの方法は、このRETIRE APIの一部として他の2つのAPIのロジックおよびアクションを複製する。

しかし、このAPIの呼び出しの一部として個々のAPIを呼び出すようにRETIRE APIを変更するだけで、コード/ロジックの重複を防止したいと考えています。これは他のAPIのロジックを変更する必要があるときに役立ちますRETIRE APIでこのロジックを複製するのを妨げます。

したがって、現在のAPI設計ではエラー処理が行われます。特定のアクションによってエラーが発生した場合、APIはトランザクションをロールバックし、失敗した理由をユーザーに表示します。そうでなければ、変更されたデータをコミットします。これは素晴らしいです。

しかし、このRETIRE API内で各APIを呼び出すと、どのようにエラーを処理できますか。 RETIRE APIが最初に 'DAMAGE API'を呼び出してダメージを記録し、それが成功するとデータをコミットしますが、 'VEHICLE STATUS' APIが失敗して関連エラーのあるユーザーに応答が送信されますが、問題は、破損APIが既に実行されているため、このデータは既に保存されているためです...ユーザーが再度試行し、すべてが成功した場合、私は 'damage'セクションに重複データを持ちます。

どのようにすべてのAPIのデータを一度コミットすれば、すべて正常に返されますか?それとも、互いに独立した3つのAPIを持つ方がよいでしょうが、関数を作成して各API内でこれらの関数を呼び出すようにしてください。

ご迷惑をおかけして申し訳ありませんが、私はあなたにすべての問題を解決する手助けをしたかったのです。事前に

おかげで

答えて

1

あなたの説明は、あなたが引退APIがダメージAPIのロジックの一部、すべてではなく、それを使用し...だからあなたは再利用したいものを考慮することを示します両方のAPIによって呼び出すことができる内部メソッドに変換します。

+0

これはすべて同じロジックです。だから私はあなたがそれをメソッドに移して、それを両方のapisから呼び出すことができると思います。 – Michael

+0

トランザクション処理とエラー報告を除いて同じロジックのすべて、つまり*ロジックの* *。 –

+0

ああ、私は参照してください。ありがとう – Michael

関連する問題