序文
この記事では、主に、URLパラメーターに基づいたスプリングルーティングに関する関連コンテンツを紹介します。参照価値と学習価値のために共有されます。以下の詳細な紹介を見てみましょう。
問題を発見します
最近、インターフェイスを作成するときに問題が発見されました。つまり、2つのRESTインターフェイスのURLのパス部分は同じであり、異なるパラメーターで渡されるクエリに従って区別されます。
たとえば、S3の通常のアップロードインターフェイスは次のとおりです。
put /{bucketname} /{objectname}チャンクでアップロードするためのインターフェイスは次のとおりです。
put /{bucketname} /{objectname}?partnumber = {partnumber}&uploadId = {uploadId}PartNumberとuploadIDは1つのインターフェイスであり、2つのパラメーターが渡されない別のインターフェイスです。では、春にルートを設定する方法は?
一般に、Routes @RequestMapping(value = "/xx", method = RequestMethod.GET)を設定します。次に、メソッドの署名では、@RequestParamを介してパラメーターを注入できます。
ただし、次のようなさまざまなパラメーターを注入することにより、区別を直接実装することはできません。
@ResponseBody@requestMapping(value = "/xx"、method = requestmethod.get)public string get1(){return "get1";}@responsebody@requestmapping(value = "/xx"、method = requestmethod.get)public string get2(@requestparam name){return "get2" + name;}これにより、エラーが報告されます。
java.lang.illegalstateException:曖昧なマッピング。 'democontroller_v01'メソッドpublic java.lang.string com.nd.sdp.ndss.controller.v01.democontroller.get1()to {[/demo/xx]、methods = [get]}:democontroller_v01 'beanメソッドはマッピングできません。解決
これは、繰り返し登録したことを意味するため、@RequestParamをルーティングベースとして使用することはできません。
@RequestParam
コンテンツタイプの処理に使用:Application/x-www-form-urlencoded用にエンコードされたコンテンツ。 (HTTPプロトコルでは、コンテンツタイプが指定されていない場合、デフォルトの渡されたパラメーターはアプリケーション/X-WWW-Form-Urlencodedタイプです)
RequestParamは、単純なタイプまたはオブジェクトタイプのプロパティを受け入れることができます。
本質は、Springの変換メカニズムConversionServiceを使用して、request.getParameter()でキー値パラメーターマップを構成して、それをパラメーター受信オブジェクトまたはフィールドに変換することです。
@RequestMappingはルーティングアノテーションです。 URLを設定するために一般的に使用される値フィールドに加えて、PARAMSパラメーターも提供します。これは、URLのクエリのパラメーターを一致させる方法を指定できます。いくつかの構成方法:
これにより、ルートを非常に柔軟に指定できます。
さらに、@RequestMappingはヘッダーパラメーターも提供します。これにより、ヘッダーの状況に応じてルーティングできます。
要約します
上記は、この記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。