В этой статье представлена краткая информация о проблемах, с которыми сталкиваются при использовании Spring Cloud Feign. Это совместно с вами. Детали следующие:
Вопрос 1:
В предыдущем примере мы говорили об этом
@Requestmapping (value = "/user/{id}", method = requestMethod.get) @getMaping ("/user/{id}") Эффекты этих двух аннотаций эквивалентны, но при притворном использовании вы можете использовать только приведенный выше метод, и вы не можете использовать @getmapping напрямую. Давайте изменим предыдущий пример на аннотацию @getmapping, чтобы увидеть эффект. Мы обнаружили, что когда служба перезапускается после изменения аннотации, было брошено следующее исключение:
Кода -копия выглядит следующим образом:
Вызвано: java.lang.illegalstateException: метод FindById не аннотирован типом метода HTTP (Ex.get, post)
Исключение означает, что мы не указываем метод HTTP
Вопрос 2:
В предыдущем примере мы разоблачили сервис Retfful следующим образом:
@Getmapping ("/template/{id}") public user findbyId (@pathvarable long id) {return client.findbyid (id); }Здесь мы напрямую используем параметры метода FindByID
@Pathvarible long id
Давайте изменим метод Фейна на это
@Requestmapping (value = "/user/{id}", method = requestMethod.get) user findbyId (@pathvariable long id); Затем мы начали сервис, и мы обнаружили, что исключение было брошено снова, за исключением информации следующим образом:
Кода -копия выглядит следующим образом:
Вызвано: java.lang.illegalstateException: Аннотация PathVariable была пустой по Param 0.
Примерно означает, что первый параметр аннотации пути не может быть пустым, мы изменяем его на следующий метод:
@RequestMapping (value = "/user/{id}", method = requestMethod.get) user findbyId (@pathvariable ("id") long id); Начните снова и обнаружите, что все в порядке.
Вопрос 3: Многопараметрическая проблема
@Requestmapping (value = "/user/name", method = requestMethod.get) user findbyusername (конечная строка username, final строковый адрес);
При запуске службы сообщается о следующем исключении:
Вызвано: java.lang.illegalStateException: метод имеет слишком много параметров тела: public Abstract com.chhliu.springboot.restful.vo.user com.chhliu.springboot.restful.feignclient.userfeignclient.findbyusernam
Причина исключения: при использовании Feign, если запрос GET отправляется, вам необходимо добавить аннотацию @RequestParam для изменения до параметра запроса, и контроллер не может добавить эту аннотацию для изменения.
Решение вышеуказанной проблемы заключается в следующем:
@Requestmapping (value = "/user/name", method = requestMethod.get) user findbyUsername (@RequestParam ("userName") окончательная строка username, @RequestParam ("Адрес") окончательный адрес строки); Вопрос 4: Метод запроса 'post' не поддерживается
Пример кода ошибки:
@Requestmapping (value = "/user/name", method = requestMethod.get) user findbyUsername (конечная строка username, @RequestParam ("Адрес") окончательный адрес строки); Примечание. Приведенный выше параметр имени пользователя не изменяется с помощью аннотации @RequestParam. Если вы отправите запрос, вы обнаружите, что вызываемый сервис был метод запроса отчетности «Post» не поддерживается. Мы четко используем метод получить. Почему называется сервисом, который считается методом Post? Причина в том, что когда имя пользователя не изменяется аннотацией @RequestParam, оно будет автоматически рассматриваться как тело запроса. До тех пор, пока есть тело, он будет считаться запросом на пост, так что вся служба отправляется в качестве запроса по почте с параметром запроса и корпусом.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.