이 기사는 Spring Cloud Feign의 사용에서 발생하는 문제에 대한 요약을 소개합니다. 그것은 당신과 공유됩니다. 세부 사항은 다음과 같습니다.
Question 1:
이전 예에서는 그것에 대해 이야기했습니다
@requestmapping (value = "/user/{id}", method = requestmethod.get) @getMapping ( "/user/{id}") 이 두 주석의 효과는 동일하지만, 위상 사용에서는 위의 방법 만 사용할 수 있으며 @GetMapping을 직접 사용할 수 없습니다. 이전 예제를 @GetMapping 주석으로 변경하여 효과를 확인해 봅시다. 주석을 수정 한 후 서비스가 다시 시작되면 다음과 같은 예외가 발생했음을 발견했습니다.
코드 사본은 다음과 같습니다.
원인 : java.lang.ilegalstateException : 메소드 FindById가 http 메소드 유형으로 주석을 달지 못했습니다 (예 : get, post)
예외는 HTTP 메소드를 지정하지 않음을 의미합니다.
Question 2:
이전 예에서는 다음과 같이 RESTFUL 서비스를 노출했습니다.
@getMapping ( "/템플릿/{id}") 공개 사용자 findById (@PathVariable Long ID) {return Client.FindById (id); }여기서 우리는 FindByid 메소드의 매개 변수를 직접 사용합니다.
@PathVariable Long ID
이것으로 Feign의 방법을 변경합시다
@requestmapping (value = "/user/{id}", method = requestMethod.get) user findById (@PathVariable long id); 그런 다음 우리는 서비스를 시작했고 예외는 다음과 같이 예외가 다시 발생한다는 것을 알았습니다.
코드 사본은 다음과 같습니다.
원인 : java.lang.ilegalstateException : partvariable 주석이 Param 0에서 비어있었습니다.
대략적으로 PathVariable 주석의 첫 번째 매개 변수가 비어있을 수 없다는 것을 의미합니다. 다음 방법으로 변경합니다.
@requestmapping (value = "/user/{id}", method = requestmethod.get) user findById (@PathVariable ( "id") long id); 다시 시작하여 모든 것이 정상이라는 것을 찾으십시오.
질문 3 : 다중 매개 변수 문제
@requestmapping (value = "/user/name", method = requestmethod.get) user findbyusername (최종 문자열 사용자 이름, 최종 문자열 주소);
서비스를 시작할 때 다음과 같은 예외 가보고됩니다.
원인 : java.lang.ilegalstateexception : 메소드는 너무 많은 신체 매개 변수를 가지고 있습니다 : 공개 추상 com.chhliu.springboot.restful.vo.user com.chhliu.springboot.restful.feignclient.userfeignclient.findbyusername (java.lang.string, java.lang.string).
예외의 원인 : Feign을 사용하는 경우 GET 요청이 전송되면 @requestparam 주석을 추가하여 요청 매개 변수 전에 수정해야하며 컨트롤러는이 주석을 추가하여 수정할 수 없습니다.
위의 문제에 대한 해결책은 다음과 같습니다.
@requestmapping (value = "/user/name", method = requestmethod.get) user findbyusername (@requestparam ( "username") 최종 문자열 사용자 이름, @requestparam ( "address") 최종 문자열 주소);
질문 4 : 요청 방법 '게시물'지원되지 않습니다
오류 코드 예 :
@requestmapping (value = "/user/name", method = requestmethod.get) 사용자 findByUserName (최종 문자열 사용자 이름, @requestParam ( "주소") 최종 문자열 주소);
참고 : 위의 사용자 이름 매개 변수는 @requestparam 주석으로 수정되지 않았습니다. 요청을 보내면 호출 된 서비스가 요청 요청 방법 '게시물'이 지원되지 않음을 알게됩니다. 우리는 Get 메소드를 명확하게 사용합니다. 호출 된 서비스가 게시물 방법으로 간주되는 이유는 무엇입니까? 그 이유는 사용자 이름이 @requestparam 주석에 의해 수정되지 않으면 자동으로 요청 본문으로 처리되기 때문입니다. 본문이있는 한 Feign의 사후 요청으로 간주되므로 전체 서비스는 요청 매개 변수 및 본문이있는 게시물 요청으로 전송됩니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.