406에러(Not Acceptable)란?
웹서버가 클라이언트에 보내는 레스폰스에 클라이언트가 처리할수 없는 데이터가 포함되어 있을경우 발생하는 에러
트러블슈팅
서버쪽에 어떠한 문제가 있음 클라이언트쪽 설정과는 관련이 없음
현상
프론트에서는 아래와 같이 axios를 이용해서 get
axios.get(getUrl(endpoint), headers);
백엔드 rails controller에서
def current
render json: current_user
end
이렇게 보내주면 에러가 발생하지 않음.
그러나 이하와 같이 jbuilder 경유시에는 406에러가 발생함.
def current
end
current.json.jbuilder
json.set! :current_user do
json.id current_user.id
json.name current_user.name
end
참고로 POSTMAN에서는 406에러가 안나고 axios.get
할때만 에러가 발생함.
원인
rails route설정에 format설정이 없어서 current.json.xx
파일을 찾지못해서 해당 에러가 발생
해결방법
레일즈 route설정에서 아래와 같이 format을 넣어주면 해결
get 'current_user', :to => 'users#current', :as => :current_user, defaults: {format: :json}