1、@ PathVariable
@PathVariable
Spring 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つの構成パラメーターがあります。
- requiredは、それが必須であるかどうかを示します。デフォルトはtrueです(省略できるか、書き込まれません)。
- defaultValueは、要求パラメーターのデフォルト値を設定できます(省略または書き込まないことができます)。
- 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) {
//业务代码省略
}
①としてエンコードされたコンテンツ@RequestParam
をContent-Type
処理するために使用され、デフォルトはこのプロパティです。application/x-www-form-urlencoded
Content-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 "测试";
}
結果は次のとおりです。