해결된 질문
작성
·
70
0
현재 테스트 코드 작성하고 있는데 다음과 같이 에러 발생합니다.
코드package board.article.api;
import board.article.service.request.ArticleCreateRequest;
import board.article.service.response.ArticleResponse;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.junit.jupiter.api.Test;
import org.springframework.web.client.RestClient;
public class ArticleApiTest {
RestClient restClient = RestClient.create("http://localhost:9000");
@Test
void createTest() {
ArticleResponse response = create(new ArticleCreateRequest(
"hi", "my content", 1L, 1L
));
System.out.println("response = " + response);
}
ArticleResponse create(ArticleCreateRequest request) {
return restClient.post()
.uri("/v1/articles")
.body(request)
.retrieve()
.body(ArticleResponse.class);
}
@Getter
@AllArgsConstructor
static class ArticleCreateRequest {
private String title;
private String content;
private Long writerId;
private Long boardId;
}
@Getter
@AllArgsConstructor
static class ArticleUpdateRequest {
private String title;
private String content;
}
}
에러
> Task :common:snowflake:compileJava UP-TO-DATE
> Task :common:snowflake:processResources NO-SOURCE
> Task :common:snowflake:classes UP-TO-DATE
> Task :common:snowflake:jar UP-TO-DATE
> Task :service:article:compileJava
> Task :service:article:processResources UP-TO-DATE
> Task :service:article:classes
> Task :service:article:compileTestJava
> Task :service:article:processTestResources NO-SOURCE
> Task :service:article:testClasses
org.springframework.web.client.HttpClientErrorException$NotAcceptable: 406 Not Acceptable: "{"timestamp":"2025-05-29T06:00:40.838+00:00","status":406,"error":"Not Acceptable","path":"/v1/articles"}"
at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:118)
at org.springframework.web.client.StatusHandler.lambda$defaultHandler$3(StatusHandler.java:86)
at org.springframework.web.client.StatusHandler.handle(StatusHandler.java:146)
at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.applyStatusHandlers(DefaultRestClient.java:672)
at org.springframework.web.client.DefaultRestClient.readWithMessageConverters(DefaultRestClient.java:195)
at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.readBody(DefaultRestClient.java:659)
at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.body(DefaultRestClient.java:605)
at board.article.api.ArticleApiTest.create(ArticleApiTest.java:26)
at board.article.api.ArticleApiTest.createTest(ArticleApiTest.java:15)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
> Task :service:article:test
ArticleApiTest > createTest() FAILED
org.springframework.web.client.HttpClientErrorException$NotAcceptable at ArticleApiTest.java:26
1 test completed, 1 failed
> Task :service:article:test FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':service:article:test'.
> There were failing tests. See the report at: file:///C:/Users/zxc86/Desktop/study/springboot/board/service/article/build/reports/tests/test/index.html
* Try:
> Run with --scan to get full insights.
BUILD FAILED in 4s
6 actionable tasks: 3 executed, 3 up-to-date
gpt에서는 accept 설정이 없어서 그렇다는데 강사님 코드에는 없어서요
원인이 뭘까요?
답변 2
0
Gwangseok Lee님, 안녕하세요!
말씀 주신 내용으로는 파악하기가 어렵네요. Accept와는 무관할 것 같습니다.
컨트롤러 코드도 보여주시겠어요?
@RestController로 선언되어 있는지, @PostMapping으로 잘 선언된게 맞는지 확인해보시면 좋을 것 같네요!
0
안녕하세요, 인프런 AI 인턴입니다. Gwangseok Lee님.
406 Not Acceptable
에러는 주로 서버가 클라이언트의 요청을 처리할 수 없는 상황에서 발생합니다. 특히 클라이언트가 서버에 Accept 헤더를 통해 특정한 응답 미디어 타입을 요청할 때, 서버가 그 미디어 타입으로 응답을 제공할 수 없는 경우에 발생합니다. 이를 해결하기 위해 아래 사항을 점검해 보시기 바랍니다:
컨트롤러의 매핑 확인:
@RequestMapping
에서 지정한 produces
미디어 타입이 클라이언트가 요청한 Accept 헤더와 일치하는지 검토하세요.Accept 헤더 설정:
RestClient
에 명시적으로 Accept 헤더를 설정해 보세요. 서버에서 클라이언트의 요청을 처리할 때 필요한 헤더를 명시적으로 지정해 문제가 발생하는 부분을 명확히 할 수 있습니다.return restClient.post()
.uri("/v1/articles")
.header("Accept", "application/json") // 헤더 설정
.body(request)
.retrieve()
.body(ArticleResponse.class);
서버 코드 점검:
@ResponseBody
속성을 사용하여 JSON이나 XML로 응답을 변환할 수 있도록 설정되어 있는지 확인합니다.디버깅 로그 활성화:
관련 문제에 대한 유사한 인프런 게시물을 통해 보다 깊이 있는 해결책을 참고하실 수 있습니다:
위의 권장사항들을 차례로 점검하면서 문제를 해결해보시기 바랍니다. 만약 여전히 문제가 해결되지 않는 경우, 서버 로그를 함께 검토하여 더 많은 정보를 얻을 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.