私たちはログインしていない商品Webサイトを分類しましたが、他のユーザーがリストした製品を見ることができます。他のユーザーの詳細を表示するには、連絡先の詳細を入力する必要があります。ユーザーが正しい携帯番号を提供しているかどうかを確認するために、番号にOTPコードを送り返します。 APIの流れは次のようになります。REST API:1つのAPIに複数の責任がありますか?
1)//ユーザーは、これは「stockId」と入力として「モバイル」)期待する(特定の株式の売り手の詳細を取得するために、フォームを記入するときにヒットするAPI:
POST /api/lead/
{
"stockId":123,
"mobile":9890384328
}
APIのレスポンス "モバイル" はすでに検証された場合(応答コード:200):
{
"sellerName": "xyz",
"sellerMobile": "+123232312",
"sellerAddress": "21, park street, new york"
}
レスポンス "モバイル" はすでに検証されていない場合(応答コード:403):
{
"OTP verification required. OTP is sent to the mobile number."
}
OTPが正しいかどう
{
"sellerName": "xyz",
"sellerMobile": "+123232312",
"sellerAddress": "21, park street, new york",
"otp": 1234
}
それが応答で販売者の詳細を送り返す:
2)ユーザーは、同じリードAPIを携帯で受信したOTPを再び要求を送り返します。 OTPが提供する場合は正しくない、応答は次のとおりです。
{
"Incorrect OTP."
}
私は、このAPIの設計にいくつかの問題を参照してください:このAPIは、OTPを戻って、売り手の詳細を戻っすなわち作業の多くを行っている
- OTP関連の機能を他のAPIに簡単に壊すことができます。たとえばOTP、すなわちGET/api/otp /を生成する1つのAPI、OTP、すなわちPOST api/verifyotp /を検証するための他のAPI。これにより、クライアントからのAPIコールの数が増加します。つまり、最初のクライアントがPOSTリードAPIを開始し、数が検証されない場合、クライアントはOTP APIにヒットします。 OTPによって検証するためには、verifyOTP apiを呼び出します。それが確認されると、Lead APIを呼び出して販売者の詳細を取得します。したがって、基本的には上記のアプローチでは4つのAPI呼び出しと2つのAPI呼び出しを行います。
- これは、「RESTクライアントが単純な固定URLを通じてRESTアプリケーションに入る」というHATEOSの非適合です。将来のすべてのアクションは、サーバーから返されたリソース表現内で検出されます。
誰かがどのアプローチが良いとお考えですか?
/api/leadを最初に打つことをお勧めします。これが未確認の場合、クライアントはOTP APIを打ち、OTP検証APIを打ち、OTPを指定すればクライアントは/ api/leadを再度打ちます。正しい? – maverick
私はそれが私の答えの本質だと思う、はい。それに応じて私の答えを更新。 – GhostCat
OTPの確認ステップでは、何らかのコールバック(クライアント渡し)を何らかの形で追加することができます。つまり、OTPが検証された場合、サーバーは内部的にコールバックコールを開始します。 OTP認証コードAPIステップの場合、/ api/lead /をサーバーに渡します。正しいOTPの場合、サーバーは/ api/lead /にリクエストを再ルーティングしますか?私たちはこれを行うことができますか? – maverick