Cet article présente un résumé des problèmes rencontrés dans l'utilisation de Spring Cloud Feign. Il est partagé avec vous. Les détails sont les suivants:
Question 1:
Dans l'exemple précédent, nous en avons parlé
@RequestMapping (value = "/ user / {id}", méthode = requestMethod.get) @getmapping ("/ user / {id}") Les effets de ces deux annotations sont équivalents, mais en usage FEIGN, vous ne pouvez utiliser que la méthode ci-dessus et vous ne pouvez pas utiliser @GetMapping directement. Changeons l'exemple précédent en annotation @getMapping pour voir l'effet. Nous avons constaté que lorsque le service est redémarré après avoir modifié l'annotation, l'exception suivante a été lancée:
La copie de code est la suivante:
Causé par: java.lang.illegalstateException: méthode findbyid non annoté avec le type de méthode http (ex.get, post)
L'exception signifie que nous ne spécifions pas la méthode http
Question 2:
Dans l'exemple précédent, nous avons exposé le service Restful comme suit:
@GetMapping ("/ template / {id}") utilisateur public findbyid (@Pathvariable long id) {return client.findById (id); }Ici, nous utilisons directement les paramètres de la méthode FindByid
@Pathvariable Long ID
Changeons la méthode de Feign à cela
@RequestMapping (value = "/ user / {id}", méthode = requestMethod.get) utilisateur findbyid (@pathvariable long id); Ensuite, nous avons commencé le service et nous avons constaté qu'une exception avait été lancée, avec les informations d'exception comme suit:
La copie de code est la suivante:
Causée par: java.lang.illegalstateException: l'annotation Pathvariable était vide sur param 0.
Ce qui signifie à peu près que le premier paramètre de l'annotation variable ne peut pas être vide, nous le changeons par la méthode suivante:
@RequestMapping (value = "/ user / {id}", méthode = requestMethod.get) utilisateur findbyid (@pathvariable ("id") long id); Recommencez et constatez que tout va bien.
Question 3: Problème multi-paramètres
@RequestMapping (value = "/ user / name", méthode = requestMethod.get) utilisateur findByUserName (Final String Username, Final String Address);
Lors du démarrage du service, l'exception suivante sera signalée:
Causées par: java.lang.illegalstateException: la méthode a trop de paramètres corporels: Public Résumé com.chhliu.springboot.restful.vo.user com.chhliu.springboot.restful.feignclient.userfeignClient.finDbySame (java.lang.string, Java.Lang.String) (java.lang.string, Java.Lang.String) (Java.Lang.String, Java.Lang.Strand) (Java.Lang.String, Java.Lang.Strand) (Java.Lang.String, Java.Lang.Strand) (Java.Lang.String, Java.Lang.Strand)
Cause d'exception: Lorsque vous utilisez Feign, si la demande GET est envoyée, vous devez ajouter l'annotation @RequestParam pour modifier avant le paramètre de demande, et le contrôleur ne peut pas ajouter cette annotation à modifier.
La solution au problème ci-dessus est la suivante:
@RequestMapping (value = "/ user / name", méthode = requestMethod.get) utilisateur findByUsername (@RequestParam ("username") Final String username, @RequestParam ("Address") Final String Address); Question 4: Méthode de demande «Poster» non pris en charge
Exemple de code d'erreur:
@RequestMapping (value = "/ user / name", méthode = requestMethod.get) utilisateur findByUserName (Final String Username, @RequestParam ("Address") Adresse de chaîne finale); Remarque: Le paramètre de nom d'utilisateur ci-dessus n'est pas modifié avec @RequestParam Annotation. Si vous envoyez une demande, vous constaterez que le service appelé a signalé la méthode de la demande «post» non pris en charge. Nous utilisons clairement la méthode GET. Pourquoi le service appelé est-il considéré comme une méthode post-post? La raison en est que lorsque le nom d'utilisateur n'est pas modifié par @RequestParam Annotation, il sera automatiquement traité comme un corps de demande. Tant qu'il y a un corps, il sera considéré comme une demande de poste par Feign, de sorte que l'ensemble du service est envoyé en tant que demande post avec un paramètre de demande et un corps.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.