Притворный клиент, делающий почтовый звонок вместо GET
Мы используем API-интерфейс шлюза Netflix, клиент Zuul и Feign. Мы обращаемся к нашему security-api для каждого запроса проверки подлинности пользователя. Во время связи с клиентом удаленного отдыха (микросервис для проверки токена) возникло непредвиденное исключение.
Caused by: feign.FeignException: status 405 reading RemoteSecurityAPI#validateToken(String); content:
{"timestamp":1508809658401,"status":405,"error":"Method Not Allowed","exception":"org.springframework.web.HttpRequestMethodNotSupportedException","message":"Request
method 'POST' not supported","path":"/api/v1//auth/validate/token"}
at feign.FeignException.errorStatus(FeignException.java:62) ~[feign-core-9.5.0.jar!/:na]
public class AuthenticationPreZuulFilter extends ZuulFilter
{
@Autowired
RemoteSecurityAPI securityAPI;
final RequestContext requestContext = RequestContext.getCurrentContext();
final HttpServletRequest request = requestContext.getRequest();
final String header = request.getHeader("Authorization");
String authToken = header.substring(7);
securityAPI.validateToken(authToken);
}
@FeignClient(name = "martmonkey-security-api")
public interface RemoteSecurityAPI
{
@RequestMapping(method = RequestMethod.GET, value = "${jwt.route.authentication.validate}")
public void validateToken(@Param("authToken") String authToken);
}
jwt.route.authentication.validate = / API /v1// авт / Validate / маркер? маркер = {authToken}
zuul:
#Service will be mapped under the /api URI
prefix: /api/v1
strip-prefix: false
sensitiveHeaders: Cookie,Set-Cookie,Authorization
routes:
martmonkey-security-api:
path: /auth/**
strip-prefix: false
sensitiveHeaders: Cookie,Set-Cookie,Authorization
serviceId: martmonkey-security-api
martmonkey-user-api:
path: /users/**
serviceId: martmonkey-user-api
jwt.route.authentication.validate = / авт / Validate / маркер
@Consumes("application/json")
@Produces("application/json")
@RestController
@RequestMapping("/api/v1")
@Api(value="Security check.", description="Operations pertaining to login.")
public class AuthenticationResource
{
@RequestMapping(method = RequestMethod.GET, value = "${jwt.route.authentication.validate}")
public ResponseEntity<Void> validateToken(@QueryParam("token") final String authToken)
{
}
}
Почему шлюз api делает запрос с типом метода 'post', хотя мы сказали использовать "method = RequestMethod.GET".