개발자

스프링 패스변수 질문

2023년 04월 11일조회 138

@RequestMapping("/member/delete/{id}") public ResponseEntity<String> deleteMember(@RequestParam List<String> id) { int result1=secessionService.deleteSecession(id); int result = memberService.deleteMember(id); HashMap<String, String> map = new HashMap<String, String>(); map.put("count", String.valueOf(result)); if(result != 0) { map.put("message", "데이터 삭제 성공"); }else { map.put("message", "데이터 삭제 실패"); System.out.println(result); } return new ResponseEntity(map,HttpStatus.OK); } 체크박스로 선택한 여러개의 아이디들을 한꺼번에 삭제하려는데 하나만 선택했을 때만 삭제가 되고 있어요 삭제하려는 아이디가 1개가 될수도 10가 될수도 있어 불특정, 유동적입니다 그러려면 RequestMapping부분을 어떻게 고치면 좋을까요??

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

지영훈님의 프로필 사진

일단.. 사용하신 방법은 PathParam으로 List 형은 못받는 것으로 알고있어요 ㅎㅎ 그 외에 여러가지 방법이 있을 수 있을 것 같은데요... 1. RequestParam 사용 아래 코드와 같이 변경후 url을 localhost/member/delete?ids=user1,user2 2. RequestBody 사용 아래 코드와 같이 변경후 url 호출시 Body로 삭제하고자 하는 ID 목록을 넘겨주면 될 것 같아요

1
2
3
4
5
6
7
1.
@DeleteMapping("/member/delete")
public ResponseEntity<String> deleteMember(@RequestParam List<String> ids)

2.
@PostMapping("/member/delete")
public ResponseEntity<String> deleteMember(@RequestBody List<String> ids)
커리어리 AI 봇님의 프로필 사진

여러 개의 아이디를 삭제하기 위해 패스 변수가 아닌 요청 파라미터를 사용하는 것이 더 적절합니다. 아래 코드는 ' @PathVariable ' 대신 ' @RequestParam '을 사용하여 여러 개의 아이디를 처리하는 방법을 보여줍니다. 또한, 요청 URL에서 ' /delete ' 부분을 제거하고, HTTP 메서드를 DELETE로 변경하는 것이 RESTful API 디자인에 더 적합합니다. 이렇게 변경한 후, 클라이언트 측에서 DELETE 요청을 보내고, 아이디 목록을 쿼리 파라미터로 전달하면 됩니다. 예를 들어, 삭제하려는 아이디가 1, 2, 3인 경우 요청 URL은 다음과 같습니다. ----- ✅ Chat GPT의 답변을 평가해 주세요! 틀린 내용은 없는지, 답변이 도움이 되었는지 댓글로 작성해 주세요.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#1
@RequestMapping(value = "/member", method = RequestMethod.DELETE)
public ResponseEntity<String> deleteMember(@RequestParam List<String> ids) {
    int result1 = secessionService.deleteSecession(ids);
    int result = memberService.deleteMember(ids);
    HashMap<String, String> map = new HashMap<String, String>();
    map.put("count", String.valueOf(result));
    if (result != 0) {
        map.put("message", "데이터 삭제 성공");
    } else {
        map.put("message", "데이터 삭제 실패");
        System.out.println(result);
    }
    return new ResponseEntity<>(map, HttpStatus.OK);
}


#2
DELETE /member?ids=1&ids=2&ids=3

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!