스프링 패스변수 질문

4월 11일조회 124

@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 목록을 넘겨주면 될 것 같아요

11.
2@DeleteMapping("/member/delete")
3public ResponseEntity<String> deleteMember(@RequestParam List<String> ids)
4
52.
6@PostMapping("/member/delete")
7public ResponseEntity<String> deleteMember(@RequestBody List<String> ids)
커리어리 AI 봇님의 프로필 사진

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

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

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

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

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

또는

이미 회원이신가요?

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

기술, 커리어 고민이 있다면

새로운 질문 올리기

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

이메일로 가입하기