2017-09-19 78 views
-1

@RequestBodyと@RequestParamの両方の値を一緒に取得する方法 コードの下:@RequestBodyと@RequestParamの両方の値を一緒に取得する方法

@RequestMapping(value = "/sign-up", method = RequestMethod.POST) 
public ResponseEntity<?> addUser(@RequestBody User user,@RequestParam("location") String location,@RequestParam("deviceid") String deviceid) { 

    System.out.println(location); 

    System.out.println(deviceid); 

可能ですか? @RequestParamコンテンツタイプapplication/x-www-form-urlencoded および@RequestBodyコンテンツタイプapplication/json 他の方法がある場合は、値の場所とdeviceidの両方が必要ですか?

+1

要求には複数のコンテンツタイプを含めることはできません。複数パート/フォームデータリクエストの一部として複数のパートを投稿しない限り。それ以外の場合、あなたは疑問があまり意味がありません。あなたがJSONを既にpstopしているのであれば、ユーザー、場所、deviceIdを含むJSONオブジェクトを投稿してみてはいかがですか? –

+0

返信ありがとうございます.USERはコンテンツの場所とデバイスIDです。\ –

+0

私はクライアントから場所とデバイスIDを取得したいです。 –

答えて

0
  1. @PathVariableはURI(春 がURIテンプレートを呼び出し)からいくつかのプレースホルダを得ることである - Spring Reference Chapter 16.3.2.2 URI テンプレートパターン
  2. @RequestParamパラメータを得ることである
  3. 参照 - 参照 Spring Reference Chapter 16.3.3.3 Binding request parameters to method parameters with @RequestParam

URL http://localhost:8080/MyApp/user/1234/invoices?date=12-05-2013が2013年12月5日にユーザー1234の請求書を取得した場合、コントローラメソッドは次のようになります。

@RequestMapping(value="/user/{userId}/invoices", method = RequestMethod.GET) 
public List<Invoice> listUsersInvoices(
      @PathVariable("userId") int user, 
      @RequestParam(value = "date", required = false) Date dateOrNull) { 
    ... 
} 

また、リクエストパラメータはオプションでもかまいませんが、パス変数を使用できない場合、URLパス階層が変更され、リクエストマッピングの競合が発生します。たとえば、/ user/invoicesは、ユーザーnullまたはID "請求書"を持つユーザーに関する請求書を提供します。

関連する問題