5、Consumable Media Types
可以在 Mapping 中加入 consumes
条件来声明 Controller 可以被接受的媒体类型
(media type)—— 也就是首部中的 Content-Type
:
@PostMapping(path = "/pets", consumes = "application/json")
public void addPet(@RequestBody Pet pet, Model model) {
// implementation omitted
}
注意:
方法级上的 consumes 条件会覆盖
类级别上的 consumes 条件。
6、Producible Media Types
可以在 Mapping 中加入 produces 条件声明 Controller 生成的媒体类型 —— 只有首部中的 Accept 符合条件的才会被映射:
@GetMapping(path = "/pets/{petId}", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public Pet getPet(@PathVariable String petId, Model model) {
// implementation omitted
}
7、请求参数和首部
可以在 @RequestMapping 中加入请求参数
(params)来缩小请求的匹配范围:
@Controller
@RequestMapping("/owners/{ownerId}")
public class RelativePathUriTemplateController {
@GetMapping(path = "/pets/{petId}", params = "myParam=myValue")
public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {
// implementation omitted
}
}
同样,可以在 @RequestMapping 中加入首部
(headers)来缩小请求的匹配范围:
@Controller
@RequestMapping("/owners/{ownerId}")
public class RelativePathUriTemplateController {
@GetMapping(path = "/pets", headers = "myHeader=myValue")
public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {
// implementation omitted
}
}