郵便配達APIインタフェース・テスト・ツールを使用している場合、どのように使用するjson
代わりに使用するのでは、それの値で文字列をx-www-form-urlencoded
することにより、すべての後に、タイプのkey-value
伝統的な価値観は制限があります。私がテストしたい場合は一括挿入データのそれへのインタフェース、使用してx-www-form-urlencoded
簡単にする方法は、このシナリオでは適用されません。
ですから、ここでは春の2つのノートから生じるん郵便配達ツールによって値でJSON文字列を使用して行う方法:
-
@RequestParam
-
@RequestBody
すべてのすべてでは、これら2つのパラメータは、同じ使用シナリオをバックグラウンドでノートを受け取ることはできませんが。
二、@ RequestParam
まず@RequestParamの利用シナリオを紹介:
注釈@RequestParamパラメータが受信されるrequestHeaderから、すなわち、要求ヘッダー。一般的に使用されGET要求など、共通のURLなど、:HTTP:// localhostを:?8081 /ブート春学習/小説/ findByAuthorAndType著者は= 唐3つの少し&タイプは=ここで、終了したController
図に示した以下の層が書き込ま:
@RequestParam 3つの設定パラメータがあります。
-
required
デフォルトでは、かどうかを示す必要がありtrue
、あなたがしなければなりません。 -
defaultValue
デフォルトのパラメータは、要求に提供することができます。 -
value
(キー値に対応する)パラメータを受け取るために名前を付けたURL。
コンテンツのContent-Typeを処理するための@RequestParamは、アプリケーション/ x-www-form-urlencodedでエンコード、このプロパティのコンテンツタイプのデフォルトです。
@RequestParamプロセスから使用されているContent-Type
にapplication/x-www-form-urlencoded
エンコードコンテンツので、郵便配達は、ボディタイプが選択されるx-www-form-urlencoded
ので、ヘッダが自動的であることになるContent-Type
:application/x-www-form-urlencoded
コードフォーマット。下図のように:
しかし、これはあなたが使用している場合、ああ、データ挿入のサポートバルクないjson
値を渡すために文字列を、タイプが設定されているがapplication/json
、送信をクリックし、その後、バックグラウンドの値を受信しない、文句を言うだろう、null
。
このとき、ノート@RequestBodyに便利です。見下すを続行↓
三、@ RequestBody
まず@RequestBody利用シナリオを紹介:
注釈@RequestBodyパラメータが受信されるrequestBodyから、すなわち、リクエストボディ。通常、非処理するためのContent-Type: application/x-www-form-urlencoded
次のような形式をエンコードするデータをapplication/json
、application/xml
データの他のタイプ。
上のapplication/json
データの種類、あなたは、バックエンドへのすべてのJSONデータ内のバックエンドを注釈@RequestBody本体を使用し、解析することができます。
テーブルへのデータの挿入3.1バルク
例えば、データのバッチが挿入され、文言コントローラ層が下に示されています。
プロセスは@RequestBodyに用いることができるためContent-Type
であるapplication/json
暗号化コンテンツ、郵便配達ので、ボディタイプが選択されるrow
- > JSON(application/json)
だから、Headers
自動的になるContent-Type
:application/json
コードフォーマット。下に示すように、本体内のデータ:
批量向表中插入两条数据,这里的 saveBatchNovel()
方法已经封装了 JPA
的 saveAll()
方法。body
里面的 json
语句的 key
值要与后端实体类的属性一一对应。
注意:前端使用$.ajax的话,一定要指定 contentType: "application/json;charset=utf-8;"
,默认为 application/x-www-form-urlencoded
。
3.2 后端解析json数据
上述示例是传递到实体类中的具体写法,那么如果传递到非实体类中,body里面的json数据需要怎么解析呢?我们再来看下面这个例子:
在body中,我们还是输入上面的json数据,根据分析,上面的json数据是一个List数组内嵌套着map对象,那么在后台的接收形式可写为 List<Map<String, String>>
,具体代码如下图所示:
postman请求:
控制台输出:
得出结论,通过@RequestBody可以解析Body中json格式的数据。
四、总结
注解@RequestParam接收的参数是来自requestHeader中,即请求头。通常用于GET请求,像POST、DELETE等其它类型的请求也可以使用。
注解@RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非 Content-Type: application/x-www-form-urlencoded
编码格式的数据,比如:application/json
、application/xml
等类型的数据。通常用于接收POST、DELETE等类型的请求数据,GET类型也可以适用。
@requestParam实例: 访问方式可为form表单 一般为get
public AjaxResult getCouponCode( @RequestParam(name = "userId", required = false, defaultValue = "-1") long userId)
当接口请求是application/JSON时,直接发Json.toJSONString(对象)
public RebateRuleDTO queryRebateRule(GetRebateRule rebateRule) { return getObject(URLRebateConstant.URL_QUERY_REBATE_RULE, JSON.toJSONString(rebateRule), RebateRuleDTO.class, "queryRebateRule");