2017-07-27 6 views
1

ajaxフロントエンドからREST WSを呼び出している間、私は基本的な疑問を持っています。今USEREMAILパラメータが明示的に渡される場合には、私はバックエンドサービスコードでUSEREMAILを使用する必要が異なるパラメータでREST WSを呼び出す

url: self.GET_GOAL_VIEW_URL, 

、しかし:

url: self.GET_GOAL_VIEW_URL + '?userEmail=' + eMail, 

かのように:私はアヤックスからWSを呼び出していますuserEmailがコール中に存在しない場合は、userIdという別のパラメータを使用する必要があります。このパラメータは、プロキシによってコールに追加されます。

WS APIを書く方法がわからないので、このパラメータかそれに基づいて、ajaxリクエストでどちらを使用するかを指定します。あなたの援助に感謝します。

+2

両方のパラメータを受け入れるようにWebサービスを開発する必要があります。パラメーターはオプションで、ビジネス・プロセッシング・ロジックは、要求でどのパラメーターが受け取られるかに基づいています。可能なすべてのパラメータを含む 'JSON'文字列を' REST'サービスに渡し、リクエストで渡されたものに応じてサービスでそれらを処理するのはなぜですか? –

+0

@AniketVのように、 'userMail'と' userId'の両方を受け入れるようにWebサービスを設計する必要があります。バックエンドWebサービスを開発するためにどのような技術を使用していますか? –

答えて

0

パラメータをクエリパラメータまたはボディパラメータとして渡すことができます。 あなたはあなたが以下のようにコードが見えるはずですジャージを使用すると仮定するとバックエンドで使用するどのRESTフレームワークで言及していない:身体のパラメータを持つ

@POST 
@Path("/somepath") 
public Response doSomething(@QueryParam("userEmail") String userEmail, @QueryParam("userId") String userId) { 
    if(userEmail != null && !userEmail.equals("")) { 
     //use email address 
    } else if(userId != null && !userId.equals("")) { 
     //use user id 
    } else { 
     throw new RuntimeException() 
    } 
} 

:クエリパラメータで

@POST 
@Path("/somepath") 
public Response doSomething(userDTO user) { 
    if(user.getUserEmail() != null && !user.getUserEmail().equals("")) { 
     //use email address 
    } else if(user.getUserId() != null && !user.getUserId().equals("")) { 
     //use user id 
    } else { 
     throw new RuntimeException() 
    } 
} 

はもちろん、あなたが戻っているのか、コンテンツの種類を指定し、必要に応じてメソッドの種類を変更する必要があります。

+0

お返事ありがとうございました。私はジャージーを使用しており、クエリパラメータ要求を送信しています。上記のようにREST APIメソッドに2つのパラメータがある場合、1つのパラメータのみを送信するか、またはAJAX呼び出しでパラメータをまったく送信しないと、問題はありません。これらのパラメータのいずれかがajax呼び出しで使用可能かどうかを確認し、要求のパラメータ名をWSメソッドのパラメータに一致させて設定します。 –

+0

正しい@RohitGupta - JAX-RS(ジャージー)クエリパラメータは必須ではありません。あなたのクライアント側がそれらを送信しない場合は、nullになります。 – zuckermanori

関連する問題