인프런 커뮤니티 질문&답변
값이 안변해요
해결된 질문
작성
·
51
0
- 학습 관련 질문을 최대한 상세히 남겨주세요! 
- 고민 과정도 같이 나열해주셔도 좋습니다. 
- 먼저 유사한 질문이 있었는지 검색해보세요. 
- 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 
    @Test
    void updateTest() {
        update(184717674569289728L);
        ArticleResponse response = read(184717674569289728L);
        System.out.println("response = " + response);
    }
    void update(Long articleId) {
        restClient.put()
                .uri("/v1/articles/{articleId}", articleId)
                .body(new ArticleUpdateRequest("hi 2", "my content 22"))
                .retrieve();
    }
    @Getter
    @AllArgsConstructor
    static class ArticleCreateRequest {
        private String title;
        private String content;
        private Long writerId;
        private Long boardId;
    }
    @Getter
    @AllArgsConstructor
    @NoArgsConstructor
    static class ArticleUpdateRequest {
        private String title;
        private String content;
    }
response = ArticleResponse(articleId=184717674569289728, title=hi, content=my content, boardId=1, writerId=1, createdAt=2025-05-25T02:22:06, modifiedAt=2025-05-25T02:22:06)
이렇게 값이 안변하는 이유가 있을까요?
    @PutMapping("/v1/articles/{articleId}")
    public ArticleResponse update(@PathVariable Long articleId, @RequestBody ArticleUpdateRequest request) {
        return articleService.update(articleId, request);
    }
답변 2
1

kimoon Hong님, 안녕하세요!
스프링부트 애플리케이션에서 API가 정상 호출되고 있는지 디버깅해보시면 좋을 것 같습니다!
짐작가는 사항으로는, 혹시 스프링부트 버전이 강의와 다를까요?
최신 버전에서는,
       restClient.put()
                .uri("/v1/articles/{articleId}", articleId)
                .body(new ArticleUpdateRequest("hi 2", "my content 22"))
                .retrieve();retreive까지만 코드 수행하면 정상적으로 API 호출이 안되더라고요!
       restClient.put()
                .uri("/v1/articles/{articleId}", articleId)
                .body(new ArticleUpdateRequest("hi 2", "my content 22"))
                .retrieve()
                .toBodilessEntity()서버 애플리케이션에 요청 자체가 들어가지 않는 상황이라면,
위처럼 toBodilessEntity까지 호출해보시면 해결될지도 싶습니다!
0
안녕하세요, 인프런 AI 인턴입니다. kimoon Hong님.
스프링 부트 기반 API에서 특정 articleId에 대한 업데이트 요청을 수행할 때, 값이 변경되지 않는 것에 대한 문제를 겪고 계신 것 같습니다. 여러 이유로 인해 값이 변경되지 않을 수 있습니다. 아래에는 그 원인과 해결 방안을 제시해 드리겠습니다.
가능한 원인과 해결 방법
- 서비스 로직 문제: - articleService.update(articleId, request)메소드 내에서 올바르게 데이터가 변경되고 저장되고 있는지 확인해야 합니다. 이 메소드에서 실제로 정보가 업데이트되는지, 데이터베이스에 제대로 반영되고 있는지 확인해 보세요.
 
 
- JPA 영속성 문제: - 만약 JPA를 사용하고 있다면, 엔티티가 영속성 컨텍스트에 의해 관리되고 있는지 확인하세요. update 메서드 내에서 @Transactional어노테이션이 제대로 동작하고 있는지, 그리고 데이터베이스 변경 사항이 commit되고 있는지를 체크해야 합니다.
 
 
- 만약 JPA를 사용하고 있다면, 엔티티가 영속성 컨텍스트에 의해 관리되고 있는지 확인하세요. update 메서드 내에서 
- HTTP 응답 캐시 문제: - 경우에 따라 HTTP 클라이언트가 이전 응답을 캐시하고 있을 수도 있습니다. 캐시를 무효화하거나 새로운 요청을 보낼 때마다 응답을 갱신하도록 설정을 변경해 보세요.
 
 
- 경우에 따라 HTTP 클라이언트가 이전 응답을 캐시하고 있을 수도 있습니다. 캐시를 무효화하거나 새로운 요청을 보낼 때마다 응답을 갱신하도록 설정을 변경해 보세요.
- API 경로 및 파라미터 설정 문제: - @RequestBody를 통해 전달되는- ArticleUpdateRequest객체의 필드가 올바르게 매핑되고 전달되고 있는지를 확인하세요. 또한,- PutMapping의 경로가 제대로 설정되어 있는지 검토해 보세요.
 
 
기존 유사 답변
비슷한 문제가 발생했던 다른 수강생들의 질문을 링크로 제공해 드리니 참고하시기 바랍니다:
링크된 게시글에서 다양한 방법으로 문제를 해결했던 예시를 확인하실 수 있습니다. 특히 JPA나 데이터베이스와 연관된 내용을 주의 깊게 읽어보시기를 권장드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 문제 해결 방안을 제공하고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.






