バックエンドのデータ転送のフロントエンドに遭遇未満のポストに使用されるRESTfulなスタイルを使用します

 問題の説明:データのフロントエンドは、バックエンドで多くの情報を見つけるために、より少ないを受けてきた郵便配達の要求を使用して、ためのアノテーションであることが判明しました。

理由の@ RequestParam @ ReqeustBody設定:バックエンドの受信設定

  ReqeustParam注釈ばね、すなわちリクエストボディrequestBodyから来る受信requestHeaderからのパラメータ、すなわち要求ヘッダ、すなわち、URL形式XXX?ユーザー名= 18&パスワード= 123、及びReqeustBody注釈パラメータを受信するため。

 

私は、コンテンツタイプがデフォルトであるフロントエンドを使用しています

アプリケーション/ JSON;のcharset = UTF-8

サーバがあります

'Content-Typeの': 'アプリケーション/ x-www-form-urlencodedで'

 

 

:次のようにバックエンドのいくつかの共通セット

  背景ノートを取得するための要求はパラメータRequestParamを受ける必要がある場合は、ポストの要求ならば、バックグラウンド・ノートは、パラメータRequestBodyを受信することです。二つの例は、以下のテーマを添付:

      リクエストを取得

@RequestMapping(値= "/ anaData" パブリック文字列selectOrderInfo(@RequestParam( "方法")文字列方法、@RequestParamマップの<string、オブジェクト> のparams){ 
        log.debug(TextUtils.format(「/ ***データ分析モジュール、統計的問い合わせの一般的な方法は、0} {** /」、法));
         戻る;(方法、paramsは)analysisClientService.selectOrderInfoを
    }

ポスト要求

(値= "/中心" @PostMapping パブリック文字列requestApi(@RequestBody地図の<string、オブジェクト> のparams)を{ 
        loger.debug(TextUtils.format( "调用开始------" ));
        返すapiCenterClientService.requestApiを(のparams); 
    }

パラメータは次のようにHttpServletRequestを注入することができるしている場合

  次のようにコントローラのHttpServletRequestの形式で注入しました。

@RestController
 パブリック クラスAutowiredRequestController { 
 
    @Autowired 
    プライベートHttpServletRequestのリクエスト。
}

スレッドの安全性の問題ありません!コントローラ層は、リクエストがThreadLocalの内のオブジェクトから取得した値である時間から値を取得し、プロキシによって生成されたJDKの動的プロキシクラスを実装クラスHttpServletReuqestを注入しました。

 

 

@RequestParam
のContent-Typeを処理する:アプリケーション/ X-WWW-フォーム-である URLエンコードエンコードされたコンテンツ。GETまたはPOSTする方法で提示。(コンテンツタイプを指定しない場合は、HTTPプロトコルは、デフォルトのパラメータ受け渡しは、application / x-www-フォーム-である URLエンコードタイプ)

RequestParamエッセンスキー値パラメータRequest.getParameter()、ConversionService構成の変換機構スプリングマップを使用して、オブジェクトまたはフィールドを受信したパラメータに変換します。

値クエリ文字列の実施形態では、体と実施形態のデータのポスト値がRequest.getParameterサーブレット()パラメータセットに受信して変換されますを取得し、あなたは@RequestParamに得ることができます

@RequestBody
処理HttpEntityデータ伝送上、典型的には非コンテンツタイプを処理するために使用される:アプリケーションデータ/のx-www-form-urlencodedでエンコード形式。

何HttpEntityがないため、要求をGETするので、@RequestBodyは適用されません。
POSTリクエスト、HttpEntityを渡すパラメータは、HttpEntity HttpMessageConverters HandlerAdapter構成を使用してデータを解析する要求ヘッダーのContent-Type、SpringMVCにデータ型を宣言し、適切な豆に結合しなければなりません。

ポスト要求の@RequestBodyは、要求を使用することはできません取得します

これは、使用@RequestBodyを別のオブジェクトを受け取る必要とする
新しいエンティティを作成し、2つのエンティティは内部のある1。これは最も簡単な、しかし十分ではありません「エレガント」。
2.地図<文字列、オブジェクト>受け入れリクエストボディ、それぞれのデシリアライズにエンティティ。
3.この方法は、彼らのHandlerMethodArgumentResolverを実現するために、に似ているが、より一般的です。

 

現在のステーションインタフェースは、ContentTypeを要求ヘッダにより指定されたフォーマットに符号化データをGETまたはPOSTデータ提出使用する場合。:次のような状況に分け
RequestBodyを処理することもできる@ ModelAttributeは、処理することができます@、1ファイルアプリケーション/ x-www-form-urlencodedで、ケースデータの@ RequestParam。
2.マルチパート/フォームデータ、@ RequestBodyは、 この形式でデータを処理することができません。(ファイルアップロードフォームのフォームがある場合は、enctype属性値マルチパート/フォームデータを指定する必要があり、トランスポートは、バイナリストリームファイルの形式を意味する。)
データ・フォーマット3.アプリケーション/ JSON、アプリケーション/ xmlの、など、使用する必要があります!に対処するRequestBody。

 

ここで立ち往生し、カードは、これを残して、不快なことが自分自身の長いポイントのメモリを与えることができます

おすすめ

転載: www.cnblogs.com/qingmuchuanqi48/p/11361320.html