[Project / Error] 406 Not Acceptable

clean·2024년 4월 4일
0

mewsinsa 기록

목록 보기
1/7
post-thumbnail

집사가 고양이의 요청 콘텐츠 협상 헤더에서 허용하지 않는 목욕을 시키려고 해서 고양이가 받아들일 수 없다고 거부하는 사진입니다

무신사 클론 코딩 프로젝트를 하던 중, 상품 등록 API로 요청을 보냈는데,

..? 406이라는 에러코드가 뜨는 것이었습니다.
어제까지 잘 작동하던 API였는데 무슨 일이지...
DB를 보면 데이터도 잘 들어가 있는데 웬 에러가 뜬거지

우선 406 에러코드가 어떤 상황일 때 뜨는지를 찾아보았습니다.

406 Not Acceptable

콘텐츠 협상 헤더, 즉 클라이언트와 서버가 약속한 형식의 응답을 서버가 생성할 수가 없어서 잘못된 응답을 던져주었다는 것이었습니다.

스프링 부트 프로젝트에서 자주 발생하는 경우로는
1. Jackson 라이브러리가 없는 경우: spring-boot-starter-web 라이브러리에 Jackson이 포함되어 있으므로 이 경우는 드물 것입니다.
2. 클라이언트 요청 헤더 Accept에 사용된 것이 MediaType 설정에 없는 경우
3. 서버가 Response로 던져주는 객체의 클래스에 getter가 없는 경우: getter가 없어서 Jackson 라이브러리가 객체를 json으로 변환하지 못해 생긴 에러인 것 같습니다.

저는 3번의 경우였고, 이 에러를 만난 다른 분들도 대부분 Getter 만드는 것을 깜빡하여 생긴 문제였던 것 같습니다.

어제 동작했는데 오늘은 동작하지 않는 이유는...
어제는 그냥 등록된 상품의 정보를 던져주었었는데, 오늘 SuccessResponse라는 응답 전용 클래스를 만들어 그 안에 data를 넣어 던져주는 것을 변경하였습니다.
그 새롭게 만든 클래스에서 getter를 만들어 주지 않아 발생한 오류였고 getter를 만들어주니 제대로 동작하는 것을 확인할 수 있었습니다.

Referene

profile
블로그 이전하려고 합니다! 👉 https://onfonf.tistory.com 🍀

0개의 댓글