2016-11-01 8 views
0

私たちはコントローラにリクエストを受け取ると、別のAPIへの呼び出しを行い、他のAPIレスポンスに基づいてリクエストを再トリガする必要があります私はこのように行うときに、異なるパラメータを持つコントローラはレスポンスに基づいて自分自身からSpringコントローラを呼び出す

@RequestMapping(value = "/search", method = RequestMethod.GET, produces = "application/json") 
public Map<String, Account> searchEndpoint(@RequestParam(name = "query", required = true) String query) { 

     RequestPayload req = new RequestPayload(query); 
     SearchResponse searchResponse = http.executeSecurePost(this.searchUrl, req, SearchResponse.class); 

     if(("particularModel").equalsIgnoreCase(searchResponse.getModel())) 
     { 
       String differentQueryParameter = searchResponse.getName(); 
       searchEndpoint(differentQueryParameter); 
     } 
     else { 
      //do something else 
     } 
     return json response; 

} 

...それはそれは2回目の呼び出しを作り、新しい応答とリターンを得ていますどこ細かい作業...しかし、再び、この時間は元のクエリである第三クエリの撃ちつく。なぜ3番目のクエリが起動されたのか分かりません。どんな助けもありがとう。

+0

whileループまたはdo-whileループを使用します。しかし、あなたは "特定のモデル"を取得していない場合は、永遠にループする可能性があります。同じ 'executeSecurePost'を呼び出し、コントローラを再帰的に呼び出さないでください。 – sura2k

+0

なぜ...私は理由がないと表示されません – user2359997

答えて

1

ハンドラを何度も呼び出すと、再帰的な関数が発生する可能性があります。あなたはこの種のプログラミングを避けることができます。apiをサービスメソッドに呼び出すためのロジックを記述して実行します。

@RequestMapping(value = "/search", method = RequestMethod.GET, produces = "application/json")public Map<String, Account> searchEndpoint(@RequestParam(name = "query", required = true) String query) { 
    //put this logic in service 
    RequestPayload req = new RequestPayload(query); 
    SearchResponse searchResponse = http.executeSecurePost(this.searchUrl, req, SearchResponse.class); 

    if(("particularModel").equalsIgnoreCase(searchResponse.getModel())) 
    { 
      String differentQueryParameter = searchResponse.getName(); 
      //put this logic in service and just call it 
      RequestPayload req = new RequestPayload(query); 
      SearchResponse searchResponse = http.executeSecurePost(this.searchUrl, req, SearchResponse.class) 
    } 
    else { 
     //do something else 
    } 
    return json response; 

} 
+0

あなたはそれが行われてはならない理由を説明してください – user2359997

関連する問題