[解決済み] RequestBodyと@RequestParamの違いは何ですか?
質問
私は、Springのドキュメントを読んでいて
@RequestBody
について知るためにSpringのドキュメントを見たところ、以下のような説明がありました。
は
@RequestBody
メソッドパラメーターアノテーションは、メソッドパラメーターがHTTPリクエストボディの値にバインドされるべきことを示します。例えば
@RequestMapping(value = "/something", method = RequestMethod.PUT)
public void handle(@RequestBody String body, Writer writer) throws IOException {
writer.write(body);
}
<ブロッククオート
リクエストボディをメソッドの引数に変換するために
HttpMessageConverter
.
HttpMessageConverter
は、HTTP リクエストメッセージからオブジェクトへの変換と、 オブジェクトから HTTP レスポンスボディへの変換を担当します。
DispatcherServlet
は、アノテーションに基づいた処理をサポートする
DefaultAnnotationHandlerMapping
と
AnnotationMethodHandlerAdapter
. Spring 3.0では
AnnotationMethodHandlerAdapter
をサポートするように拡張されました。
@RequestBody
を持ち、以下のような
HttpMessageConverter
がデフォルトで登録されています。
...
しかし、私が混乱したのは、彼らがドキュメントに書いた次のような文章です。
RequestBodyメソッドパラメーターアノテーションは、メソッドパラメーターがHTTPリクエストボディの値にバインドされるべきことを示します。
彼らは何を意味するのでしょうか?どなたか例を示していただけませんか?
その
@RequestParam
の定義は以下の通りです。
メソッドパラメータがウェブリクエストパラメータにバインドされることを示すアノテーションです。でアノテーションされたハンドラメソッドでサポートされています。
Servlet
およびPortlet
の環境である。
私はそれらの間で混乱するようになりました。それらが互いにどのように異なるかについて、例を挙げて教えてください。
どのように解決するのですか?
@RequestParam
アノテーションされたパラメータは、特定のServletリクエストパラメータにリンクされます。パラメータ値は宣言されたメソッド引数タイプに変換されます。
このアノテーションは、メソッドパラメータがウェブリクエストパラメータにバインドされるべきであることを示します。
例えばSpring RequestParam(s)に対するAngularのリクエストは以下のようになります。
$http.post('http://localhost:7777/scan/l/register?username="Johny"&password="123123"&auth=true')
.success(function (data, status, headers, config) {
...
})
RequestParamを持つエンドポイントです。
@RequestMapping(method = RequestMethod.POST, value = "/register")
public Map<String, String> register(Model uiModel,
@RequestParam String username,
@RequestParam String password,
@RequestParam boolean auth,
HttpServletRequest httpServletRequest) {...
@RequestBody
アノテーションされたパラメータは、HTTPリクエストボディにリンクされます。パラメータの値は、HttpMessageConvertersを使用して宣言されたメソッドの引数タイプに変換されます。
このアノテーションは、メソッドパラメータがWebリクエストのボディにバインドされる必要があることを示します。
例えばSpring RequestBodyに対するAngularのリクエストは次のようになります。
$scope.user = {
username: "foo",
auth: true,
password: "bar"
};
$http.post('http://localhost:7777/scan/l/register', $scope.user).
success(function (data, status, headers, config) {
...
})
RequestBodyを持つエンドポイントです。
@RequestMapping(method = RequestMethod.POST, produces = "application/json",
value = "/register")
public Map<String, String> register(Model uiModel,
@RequestBody User user,
HttpServletRequest httpServletRequest) {...
これが役立つといいのですが。
関連
-
[解決済み] Spring Data JPAにおけるCrudRepositoryとJpaRepositoryのインターフェースの違いは何ですか?
-
[解決済み] Spring Frameworkの@Injectと@Autowiredの違いは何ですか?どのような条件でどちらを使うか?
-
[解決済み] 複数のBeanが見つかった場合、Springはどのように名前による自動配線を行うのですか?
-
[解決済み] java:comp/env/は何をするところですか?
-
[解決済み] Spring Boot JPA - 自動再接続の設定
-
[解決済み] Spring BootとMongoDBへの接続設定方法
-
[解決済み] なぜ春になると静電場が自動化されないのか?
-
[解決済み] kotlinで@Autowiredのようなspringアノテーションを使用する方法とは?
-
[解決済み] Map または Properties オブジェクトとしてすべての環境プロパティにアクセスする
-
[解決済み] Spring AOP: JoinPointとPointCutの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Springのセキュリティ認証の例外を@ExceptionHandlerで処理する
-
[解決済み] 複数のBeanが見つかった場合、Springはどのように名前による自動配線を行うのですか?
-
[解決済み] Spring Boot - 実行中のポートを取得する方法
-
[解決済み] Maven依存性 spring-webとspring-webmvcの比較
-
[解決済み] Spring BeanPostProcessorは具体的にどのように動作するのですか?
-
[解決済み] Spring DAOとSpring ORMとSpring JDBCの比較
-
[解決済み] Spring: 静的フィールドに値を注入するには?
-
[解決済み] Spring Bootアプリケーションの環境指定application.propertiesファイル [終了しました]。
-
[解決済み] Intellij IDEAがSpring Bootのプロパティを解決できないと訴えるが、問題なく動作している
-
[解決済み] Spring CORS 'Access-Control-Allow-Origin' ヘッダが存在しない。