У меня есть существующий клиентский интерфейс Spring Cloud Feign, который имеет много сопоставлений для моего API-интерфейса на стороне сервера. Я добавляю несколько новых методов, и у меня внезапно возникает ошибка. Я пытаюсь добавить метод формы:Spring Cloud Feign not processing @RequestMapping UriTemplate
@RequestMapping(value = "/tasks/{id}", method = GET)
public Resource<Task> getTask(@PathVariable("id")Long id);
Все компилируется нормально, но когда я пытаюсь сделать вызов в getTask() метод выше, я всегда получаю IllegalArgumentException жалуется на URL не действительный. Это верно, потому что URL-адрес по-прежнему содержит UriTemplate {id}
.
Полный стек: java.lang.IllegalArgumentException: недопустимый символ в пути по индексу 29: http://connect/connect/tasks/ {ID} в java.net.URI $ Parser.fail (URI.java:2848) на Java. net.URI $ Parser.checkChars (URI.java:3021) at java.net.URI $ Parser.parseHierarchical (URI.java:3105) на java.net.URI $ Parser.parse (URI.java:3053) на java.net.URI. (URI.java:588) на java.net.URI.create (URI.java:850) на feign.ribbon.RibbonClient.execute (RibbonClient.java:64) at feign .SynchronousMethodHandler.executeAndDecode (SynchronousMethodHandler.java:92) при симуляции .SynchronousMethodHandler.invoke (SynchronousMethodHandler.java:71) в feign.ReflectiveFeign $ FeignInvocationHandler.invoke (ReflectiveFeign.java:94) на com.sun.proxy. $ Proxy55.getTask (Unknown Source)
Есть десятки других методов в том же интерфейсе, которые используют этот точный шаблон, и все работает нормально. Я не могу для жизни понять, почему Feign/Spring неожиданно сталкивается с этим методом. Я пробовал все возможные комбинации настроек и способы записи метода. Если я просто удалю {id}
, вызов пройдет, но, очевидно, вернет неверные данные, так как отсутствует идентификационная часть URI.
Я использую Spring Cloud Angel.SR6 с Spring Boot 1.2.8 и Feign 8.5.0.
Это странно. Есть ли проект, который воспроизводит проблему? – spencergibb
Я согласен, что это довольно странно. Я смутно вспоминаю об этом в прошлом, и у меня есть представление, что это побочный эффект чего-то другого. Тот факт, что аспект адреса хоста/порта URL-адреса неверен, также был несколько связан. К сожалению, это было довольно давно, и в этот момент код не был таким стабильным, что я не помню, как это было разрешено. У меня нет кода, который я могу опубликовать в любом месте, и у меня еще не было возможности воспроизвести код примера. Я надеюсь, что кто-то другой сможет указать мне в правильном направлении. –
Я просто попробовал этот метод, и он работает для меня с использованием 1.1.0M5. Можете ли вы поделиться всем своим классом клиентов? – Newbie