Spring – Parameter Mapping 방법

By | 2023년 2월 7일
Table of Contents

Spring – Parameter Mapping 방법

Spring 에서 컨트롤러에 파라미터를 전달하는 방법을 정리해 봅니다.
매번 검색하는 것보다 한번에 정리하는 것이 좋을 듯 합니다.

@PathVariable

http://localhost/api/PathVariable/member/1

변수명이 동일한경우 @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;
}

답글 남기기