Table of Content
Spring – Parameter Mapping 방법
Spring 에서 컨트롤러에 파라미터를 전달하는 방법을 정리해 봅니다.
매번 검색하는 것보다 한번에 정리하는 것이 좋을 듯 합니다.
@PathVariable
변수명이 동일한경우 @PathVariable("id")
와 같이 변수를 지정해 주지 않아도 됩니다.
@GetMapping("/PathVariable/{type}/{id}")
@ResponseBody
public String pathVariableTest(@PathVariable Integer id, @PathVariable String type) {
return "success";
}
@GetMapping("/PathVariable/{type}/{id}")
@ResponseBody
public String pathVariableTest(@PathVariable("id") Integer typeId, @PathVariable String type) {
return "success";
}
@RequestParam
http://localhost:8080/api/RequestParam?id=1&name=kim&description=member&address=seoul&active=true
@GetMapping("/RequestParam")
@ResponseBody
public String requestParam(
@RequestParam(required = false, value = "id") Integer memberId,
@RequestParam(required = false) String name,
@RequestParam(required = false) String description,
@RequestParam(required = false) String address,
@RequestParam(required = false) boolean active) {
return "success";
}
Map<String, Object>
을 통해 한번에 받을수도 있습니다.
하지만, @ModelAttribute
를 이용해 받는 것이 더 깔끔합니다.
@GetMapping("/RequestParam")
@ResponseBody
public String requestParam(
@RequestParam Map<String, Object> allParameters
) {
//처리..
return "success";
}
@ModelAttribute
@Getter
@Setter
public class Member {
private Integer id;
private String name;
private String description;
private String address;
private boolean active;
private List<Integer> arr;
}
@GetMapping("/ModelAttribute")
@ResponseBody
public Member ModelAtrribute(@ModelAttribute Member member) {
return member;
}
@Getter
@Setter
public class MemberArray {
private List<Member> members;
}
@PostMapping("/ModelAttribute")
@ResponseBody
public Object ModelAtrributePost(@ModelAttribute MemberArray memberArray) {
return member;
}
@RequestBody
@PostMapping("/RequestBody")
@ResponseBody
public Member RequestBody(@RequestBody Member member) {
return member;
}
@PostMapping("/RequestBodyList")
@ResponseBody
public Object RequestBodyListPost(@RequestBody List<Member> members) {
return members;
}