2016-09-04 3 views
0

私はSpringには新しいので、引数としてCollection/Iterableを取るコントローラを作成したいと思います。このように:Springブートコントローラの引数としてCollection/Iterableを受け取ります。

@RequestMapping(value = "friends", method = RequestMethod.POST) 
public @ResponseBody Callable<Iterable<User>> 
getFriendsOfUser(@RequestParam(required = true, name = "mobiles") Iterable<String> mobs) { 
    // return callable 
} 

コンパイルエラーはありませんが、動作させることはできません。これはどのように機能しますか?そして、このapiへの要求はどのように構築されるのでしょうか?あなたの代わりに@RequestParam

@RequestParamあるの@RequestBodyを必要とする場合がありますので、名前が示すように

+0

あなたはあなたのRestURLを投稿してもらえますか?それで問題を見つけることができます。 – VelNaga

+0

"http:// localhost:8080/users/friends"と同じようにlocalhostを使用しています – Debanjan

+0

URLにリクエストパラメータが表示されないのはなぜですか?requestParamを使用している理由は?もしそれがjsonを使っているのであれば、RequestParam – VelNaga

答えて

1
public String getFriendsOfUser(@RequestParam(required = true, value = "mobiles") String[] mobiless){ 
.... 
} 

、あなたのフロントエンドコードとAjax呼び出しを投稿疑義がある場合は、あなたの携帯電話はまだ

mobiles=myValue1&mobiles=myValue2&mobiles=myValue3 

または

mobiles=myvalue1,myValue2,myValue3 

でなければなりません。

+0

これはGET要求ですが、私はそれをPOSTとして使いたいと思います。あなたはそれで私を助けることができますか? – Debanjan

+0

あなたはフロントコールを投稿することもできます。フロントエンドコードを投稿すると、解決できない場合は正確な解決策を出すことができます。 – VelNaga

+0

私はフロントエンドをやっていない、これはアンドロイドアプリケーションのためのAPIとして使用される、私はちょうど残りのクライアントからのAPIを試しています。 ソリューションは機能します。 私が間違っている場合は、IterableをPOST要求の引数として送信できません。 API経由で配列だけを送ることができます。 – Debanjan

1

あなたはリクエストパラメータのために、POST方法をマッピングしました:[host]/endpoint?param=foo&secondParam=bar

@RequestBody

のに対し、/ JSONのためでありますXMLまたは要求の本文として送信される他のタイプのコンテンツ

+0

これで、リクエストボディにリスト/コレクション/ iterableを送る例を挙げることができますか?この場合、RequestParamをRequestBodyに置き換えると、サーバーに送信する必要があるリクエスト本文は何でしょうか? – Debanjan

+1

それはまったく真実ではありません。あなたが 'application/x-www-form-urlencoded'のコンテンツタイプで' POST'しているなら、 '?RequestParam'は'? 'の後の' GET' URLのように見えるでしょう。 –

関連する問題