@ PathVariable、@ RequestParam、@RequestBodyの使用

1、@ PathVariable

@PathVariableSpring 3.0の新機能であるURLバインドプレースホルダー(1つのパラメーターのみ)のマッピングでは、URLのプレースホルダーパラメーターをコントローラー(バックエンドコントローラーレイヤー)の処理メソッドの受信パラメーターにバインドできます。@PathVariable

URLの{xxx}プレースホルダーは、@PathVariable(“xxx“)(バックエンドコントローラーレイヤーで)アクションメソッドの受信パラメーターにバインドできます。

クラス間の主な違いは、リクエストメソッドに基づいています(リクエストURLは同じで、メソッドは異なります)。

例:

1.都市ID查询都市によると、

    @GetMapping(value = "/api/city/{id}")
    public City findCity(@PathVariable("id") int id) {
    
    
        return cityService.findCityById(id);
    }

フロントエンドはこのインターフェースURLにアクセスします:

http://localhost:8080/api/city/需要查询城市的id

2.都市ID删除都市によると

// 前端访问此接口url:
// http://localhost:8080/api/city/需要删除城市的id
@DeleteMapping(value = "/api/city/{id}")
    public int modifyCity(@PathVariable("id") int id) {
    
    
        return cityService.deleteCity(id);
    }

RESTは、GET、POST、PUT、DELETEリクエストメソッドをサポートしています。

示例: 
- /api/city/1 HTTP GET :  得到 id = 1 的城市信息  
- /api/city/1 HTTP DELETE:删除 id = 1 的城市信息  
- /api/city/1 HTTP PUT:   更新 id = 1 的城市信息 
- /api/city/  HTTP POST:  新增城市信息 

具体的なコードは次のとおりです。

@RestController
public class CityController {
    
    
    @Autowired
    private CityService cityService;

    //根据id查询城市信息
    @GetMapping(value = "/api/city/{id}")
    public City findOneCity(@PathVariable("id") int id) {
    
    
        return cityService.findCityById(id);
    }
      
    //根据id删除城市信息
    @DeleteMapping(value = "/api/city/{id}")
    public int modifyCity(@PathVariable("id") int id) {
    
    
        return cityService.deleteCity(id);
    }
    
    //查询所有城市信息
    @GetMapping(value = "/api/city")
    public List<City> findAllCity() {
    
    
        return cityService.findAllCity();
    }

    //添加城市信息
    @PostMapping(value = "/api/city")
    public int createCity(@RequestBody City city) {
    
    
        return cityService.saveCity(city);
    }
    
    //修改城市信息
    @PutMapping(value = "/api/city")
    public int modifyCity(@RequestBody City city) {
    
    
       return cityService.updateCity(city);
    }
}

2. @RequestParamの使用(データを取得するためのリクエスト本文またはURL)

@RequestParamには、次の3つの構成パラメーターがあります。

  1. requiredは、それが必須であるかどうかを示します。デフォルトはtrueです(省略できるか、書き込まれません)。
  2. defaultValueは、要求パラメーターのデフォルト値を設定できます(省略または書き込まないことができます)。
  3. valueは、受信URLのパラメーター名です(通常、受信パラメーター名と同じです)。

図のように次のコードを使用します

 @GetMapping("/user/login/")
    public ResponseData UserLogin(@RequestParam(value = "username",required = true,defaultValue = "zhangsan") String username,@RequestParam(value = "pwd",required = true,defaultValue = "123456") String pwd) {
    
    
       //业务代码省略
    }

としてエンコードされたコンテンツ@RequestParamContent-Type処理するために使用され、デフォルトはこのプロパティです。application/x-www-form-urlencodedContent-Type

②POST @RequestParam、DELETE、その他のリクエストなど、他のタイプのリクエストにも使用できます。

次の図に示すように、単純@RequestParam型の属性を受け入れることができます。

短所:データのバッチ送信をサポートしていません(たとえば、コレクションオブジェクトを送信できません)
ここに画像の説明を挿入

3. @RequestBodyの使用(リクエスト本文のデータを取得するため)

通常、フロントエンドから送信されるjsonおよびxml形式のデータ、つまり、application / json、application / xml、およびその他のタイプのデータを受信するために使用されます。

単一のオブジェクト:

フロントエンドはjsonデータを送信
ここに画像の説明を挿入
します。バックエンドはオブジェクトを使用して以下を受信します。

 @PostMapping("/user/userLogin")
    public String userLogin(@RequestBody User user) {
    
    
        System.out.println(user);
        return user.toString();
    }

複数のオブジェクト:

フロントエンドはjsonデータを送信します:
ここに画像の説明を挿入
バックエンドは(オブジェクト)コレクションを使用して受信します:

  @PostMapping("/user/userLogin")
    public String userLogin(@RequestBody List<User> users) {
    
    
        System.out.println(users);
        users.forEach((user)->{
    
    
            System.out.println(user);
        });
        return "测试";
    }

結果は次のとおりです。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_43605266/article/details/114991039