해결된 질문
작성
·
41
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 영속성 문제:
@Transactional
어노테이션이 제대로 동작하고 있는지, 그리고 데이터베이스 변경 사항이 commit되고 있는지를 체크해야 합니다.HTTP 응답 캐시 문제:
API 경로 및 파라미터 설정 문제:
@RequestBody
를 통해 전달되는 ArticleUpdateRequest
객체의 필드가 올바르게 매핑되고 전달되고 있는지를 확인하세요. 또한, PutMapping
의 경로가 제대로 설정되어 있는지 검토해 보세요.비슷한 문제가 발생했던 다른 수강생들의 질문을 링크로 제공해 드리니 참고하시기 바랍니다:
링크된 게시글에서 다양한 방법으로 문제를 해결했던 예시를 확인하실 수 있습니다. 특히 JPA나 데이터베이스와 연관된 내용을 주의 깊게 읽어보시기를 권장드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 문제 해결 방안을 제공하고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.