[힐링 메시지 삭제 API]

1. 힐링 메시지 삭제

기존에 본인이 작성했던 힐링 메시지를 삭제하는 API이다.
삭제할때는 삭제할 힐링메시지의 고유 번호를 전달하여 삭제한다.

2. Trouble Solving

만났던 오류

Name for argument of type [java.lang.Long] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag.

참고한 사이트 URL
https://velog.io/@ghwns9991/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8-3.2-%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98-%EC%9D%B4%EB%A6%84-%EC%9D%B8%EC%8B%9D-%EB%AC%B8%EC%A0%9C

별 것 아니였다.

스프링 부트 3.2부터 매개변수의 이름을 인식하지 못하는 문제가 있다고 한다.

스프링 부트 3.2부터 자바 컴파일러에 -parameters 옵션을 넣어주어야 어노테이션의 이름을 생략할 수 있다.

주로 다음 어노테이션에서 해당 오류가 많이 난다.
@RequestParam, @PathVariable, @Autowired, @ConfigurationProperties

그때는 다음과 같이 명확하게 매개변수의 이름을 지명해줘야 한다.

@RequestMapping("/request")
public String request(@RequestParam("username") String username) {
   ...
}
@RequestMapping("/request")
public String request(@RequestParam String username) {
   ...
}
public String mappingPath(@PathVariable("userId") String userId) {
    ...
}

3. 구현

3.1 Controller

     * 힐링 메시지 삭제 API
     * @param request 사용자 요청
     * @return 삭제 완료 메시지
     */
    @Operation(summary = " 힐링 메시지 삭제 API ", description = "")
    @DeleteMapping("/{messageId}")
    public ResponseEntity<String> delete(HttpServletRequest request, @PathVariable("messageId") Long messageId){

        /* 선택한 힐링 메시지 삭제 */
        healingMessageService.delete(request,messageId);

        return ResponseEntity.ok("힐링 메시지 삭제 완료");
    }

위에서처럼 매개변수를 정확하게 지칭해야 한다.

그러면 클라이언트 측에서는 다음과 같이 요청을 보낼 수 있다.

http://localhost:8080/healingmessage/1

3.2 Service

3.2.1 Interface

 /**
     * 힐링 메세지 삭제 메서드
     * @param request 사용자 요청
     * @param messageId 삭제할 힐링 메시지 고유 번호
     */
    void delete(HttpServletRequest request, Long messageId);

3.2.2 Implements

 /**
     * 힐링 메시지 삭제 메서드
     * @param request 사용자 요청
     * @param messageId 삭제할 힐링 메시지 고유 번호
     */
    @Override
    public void delete(HttpServletRequest request, Long messageId) {

        /* 힐링 메시지 삭제 */
        healingMessageMapper.delete(messageId);

    }

3.3 Mapper

3.3.1 Mapper

/**
     * 힐링 메시지 삭제
     * @param messageId 삭제할 메시지의 고유 번호
     */
    void delete(Long messageId);

3.3.2 Xml

  <!-- 선택한 힐링 메시지 삭제 -->
    <delete id="delete">
        DELETE FROM healing_message
        WHERE messageId = #{messageId}
    </delete>

4. 결과

원래 존재하던 힐링 메시지

삭제 성공

profile
내가 있는 그 조직에서 가장 성실하기만 하자

0개의 댓글