5.RestFulスタイル
5.1。コンセプト
Restfulは、リソースの配置と操作のスタイルです。それは標準や合意ではなく、単なるスタイルです。このスタイルに基づいて設計されたソフトウェアは、キャッシュなどのメカニズムをより簡潔に、より階層化し、実装しやすくすることができます。
5.2、機能
リソース:インターネット上のすべてのものをリソースとして抽象化できます
リソース操作:POST、DELETE、PUT、GETを使用し、さまざまなメソッドを使用してリソースを操作します。
それぞれ、追加、削除、変更、およびクエリを実行します。
5.3。従来の方法でリソースを運用する
さまざまなパラメータを使用して、さまざまな効果を実現します。単一の方法、投稿して取得
http://127.0.0.1/item/queryItem.action?id=1クエリ、GET
http://127.0.0.1/item/saveItem.actionが追加され、POST
http://127.0.0.1/item/updateItem.action update、POST
http://127.0.0.1/item/deleteItem.action?id=1削除、GET、またはPOST
5.4、RESTfulな操作リソースを使用する
さまざまなリクエスト方法でさまざまな効果を実現できます。次のようになります。リクエストアドレスは同じですが、機能が異なる場合があります。
http://127.0.0.1/item/1クエリ、GET
http://127.0.0.1/item new、POST
http://127.0.0.1/item update、PUT
http://127.0.0.1/item/1 delete、DELETE
5.5、テスト
-
新しいクラスRestFulControllerを作成します
@Controller public class RestFulController { }
-
Spring MVCの@PathVariableアノテーションを使用して、メソッドパラメーターの値をURIテンプレート変数にバインドできます。
package com.kuber.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; @Controller public class RestFulController { @RequestMapping("/add/{a}/{b}") public String test1(@PathVariable int a, @PathVariable String b, Model model){ String res = a + b; model.addAttribute("msg","加法结果1为:"+res); return "controller1"; } }
-
テスト結果をリクエストする
-
思考:パス変数を使用する利点は何ですか?
-
-
パスをより簡潔にします。
-
パラメータを取得する方が便利で、フレームワークは自動的に型変換を実行します。
-
アクセスパラメータは、パス変数のタイプによって制限できます。タイプが異なる場合、対応するリクエストメソッドにアクセスできません。たとえば、アクセスパスが/ commit / 1 / aの場合、パスはメソッドであり、パラメータになりません。変換に失敗しました。上記の1つはintで、もう1つはstringです。ここでは、2つのintに変更し、パスを入力して結果を表示します。
-
@Controller public class RestFulController { @RequestMapping("/add/{a}/{b}") public String test1(@PathVariable int a, @PathVariable int b, Model model){ int res = a + b; model.addAttribute("msg","加法结果1为:"+res); return "controller1"; } }
-
5.6、method属性を使用してリクエストタイプを指定します
リクエストの種類を制限するために使用されます。これにより、リクエストの範囲が狭まる可能性があります。GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACEなどの要求述部のタイプを指定します。
それをテストしましょう:
-
メソッドを追加する
//映射访问路径,必须是POST请求 @RequestMapping(value = "/hello",method = RequestMethod.POST) public String test2(Model model){ model.addAttribute("msg","hello!!!"); return "controller1"; }
-
ブラウザのアドレスバーを使用してデフォルトのGetリクエストにアクセスすると、エラー405が報告されます。
-
POSTをGETに変更した場合、それは正常です
@RequestMapping(value = "/hello",method = RequestMethod.GET) public String test2(Model model){ model.addAttribute("msg","hello!!!"); return "controller1"; }
概要:
Spring MVCの@RequestMappingアノテーションは、GET、PUT、POST、DELETE、PATCHなどのHTTPリクエストメソッドを処理できます。
デフォルトでは、すべてのアドレスバーリクエストはHTTPGETになります。
メソッドレベルのアノテーションバリアントは次のとおりです。結合されたアノテーション
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping
@GetMappingは組み合わせアノテーションであり、より頻繁に使用されます。
再生されるのは、@ RequestMapping(method = RequestMethod.GET)のショートカットです。