FeignException$Internal Server Error 기반 솔 루 션

원인:
feign 전송 오류 전송 값 을 받 을 수 없습니다.
POST 이기 때문에@RequestBody 를 추가 해서 시도 해 보도 록 하 겠 습 니 다.
해결:
오류 원인 은@RequestBody 를 추가 하지 않 았 기 때 문 입 니 다.
json 을 통 해 body 에 직접 문자열 을 보 내지 않 고@RequestBody 를 통 해 받 을 수 있 는 지 확인 해 보 세 요.
Feign 호출 에 실 패 했 습 니 다.feign.FeignException:status 500 readingXXX.LocalDate 직렬 화 오류
최근 프로젝트 에 서 는 feign 으로 서버 호출 을 해 야 합 니 다.다른 서비스의 인 터 페 이 스 를 호출 하여 제 정 보 를 보 내야 합 니 다.하지만 항상...
오류 보고:feign.FeignException:status 500 readingXXX.
내 호출 코드 는 다음 과 같다.

@PostMapping(value = "/xx/xxx")
public ResultData<String> saveProjectInfo(ProjectInfo p);
이치 대로 말 하면 문제 가 없 을 것 입 니 다.상대방 도 code 가 500 인 응답 을 되 돌려 주 었 습 니 다.요청 이 상대방 의 인터페이스 에 전달 되 었 지만 정상적으로 처리 되 지 않 았 다 는 것 을 설명 합 니 다.
그래서 매개 변수 가 전송 되 지 않 았 다 고 의심 한 다음 에 디 버 깅 을 중단 하고 요청 전의 매개 변수 정 보 를'p'로 복사 하여 상대방 프로젝트 의 swagger 문 서 를 열 고 복 사 된 매개 변 수 를 보 내 면 정상적으로 통 하 는 것 을 발견 할 수 있 습 니 다.
이것 은 이상 하 다.같은 매개 변 수 는 내 가 있 는 곳 에서 feign 을 통 해 호출 하면 안 되 고 swagger 에서 직접 호출 하면 된다.그래서 여기저기 서 이 유 를 찾기 시 작 했 습 니 다.마지막 으로 다른 사람의 건의 에 따라 가방 을 잡 는 도구 로 제 호출 방법 에서 보 낸 요청 가방 을 잡 았 습 니 다.저 에 게 서 보 낸 가방 이 swagger 에서 진 매개 변수 와 똑 같은 지 확인 하 세 요.
역시 문 제 를 발 견 했 습 니 다.상대방 의 ProjectInfo 류 의 crateTime 속성 은 LocalDate 유형 이기 때 문 입 니 다.유형 이 일치 하기 위해 저 는 실체 클래스 를 만 들 때 도 createTime 속성 을 LocalDate 유형 으로 설정 합 니 다.
swagger 에서 문자열 을 직접 지 는 것 을 테스트 하면 됩 니 다.상대방 의 인 터 페 이 스 는 인 자 를 받 을 때 바로 LocalDate 로 전 환 됩 니 다.

{
  .......
  "createTime"  : "2020-01-09"
   .........
}
하지만 제 요청 이 들 어 오자 잡 은 가방 은 createTime 이 이렇게 되 었 습 니 다.

이 로 인해 상대방 의 수신 매개 변수 와 일치 하지 않 아 자 연 스 럽 게 잘못 보고 했다.마지막 으로 제 ProjectInfo 실체 클래스 의 createTime 속성 을 String 형식 으로 설정 하면 됩 니 다.jar 패 키 지 를 도입 한 후에 주 해 를 사용 하여 보 낼 때 이 속성 을'yyy-MM-dd'와 같은 지정 한 형식 으로 정렬 할 수도 있 습 니 다.
한 마디 로 하면 LocalDate 와 같은 종류 에 대해 기본 값 을 json 으로 바 꿀 때 일반적인 자바 Object(yyy-MM-dd 로 바 꿀 것 으로 예상 합 니 다)로 보고 네트워크 에 보 냅 니 다.상대방 이 받 을 때 는 그런 형식 으로 제 이 슨 이 LocalDate 형식의 대상 으로 정확하게 전환 하지 못 해 잘못 보고 했다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기