[5] RestFulスタイル

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、テスト

  1. 新しいクラスRestFulControllerを作成します

    @Controller
    public class RestFulController {
          
          
    }
    
  2. 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";
        }
    }
    
  3. テスト結果をリクエストする

    ここに画像の説明を挿入

  4. 思考:パス変数を使用する利点は何ですか?

    • パスをより簡潔にします。

    • パラメータを取得する方が便利で、フレームワークは自動的に型変換を実行します。

    • アクセスパラメータは、パス変数のタイプによって制限できます。タイプが異なる場合、対応するリクエストメソッドにアクセスできません。たとえば、アクセスパスが/ 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)のショートカットです。

おすすめ

転載: blog.csdn.net/weixin_43215322/article/details/111243019