In diesem Artikel wird eine Zusammenfassung der Probleme eingeführt, die bei der Verwendung von Frühlingswolken vorgetroffen werden. Es wird mit Ihnen geteilt. Die Details sind wie folgt:
Frage 1:
Im vorherigen Beispiel haben wir darüber gesprochen
@RequestMapping (value = "/user/{id}", method = requestMethod.get) @getMapping ("/user/{id}")) Die Auswirkungen dieser beiden Anmerkungen sind äquivalent, aber bei der vorgetäuschten Verwendung können Sie nur die obige Methode verwenden und Sie können @getMapping nicht direkt verwenden. Ändern wir das vorherige Beispiel in @getMapping Annotation, um den Effekt zu erkennen. Wir fanden heraus, dass der Dienst nach Änderung der Annotation neu gestartet wurde, die folgende Ausnahme ausgelöst wurde:
Die Codekopie lautet wie folgt:
Verursacht durch: Java.lang.IilleGalStateException: Methode findById nicht mit dem HTTP -Methodentyp kommentiert (Ex.Get, Post)
Die Ausnahme bedeutet, dass wir keine HTTP -Methode angeben
Frage 2:
Im vorherigen Beispiel haben wir den erholsamen Service wie folgt enthüllt:
@Getmapping ("/template/{id}") public user findById (@PathVariable Long id) {return client.findbyId (id); }Hier verwenden wir direkt die Parameter der FindById -Methode
@PathVariable Long ID
Lassen Sie uns die Methode von VEIGN dazu ändern
@RequestMapping (value = "/user/{id}", method = requestMethod.get) Benutzer findById (@PathVariable Long id); Dann begannen wir den Service und fanden heraus, dass eine Ausnahme erneut mit den Ausnahmeinformationen wie folgt ausgelöst wurde:
Die Codekopie lautet wie folgt:
Verursacht durch: Java.lang.IilleGalStateException: PathVariable Annotation war auf Param 0 leer.
Das Unglück bedeutet, dass der erste Parameter der pathVariablen Annotation nicht leer sein kann, wir ändern ihn auf die folgende Methode:
@RequestMapping (value = "/user/{id}", method = requestMethod.get) Benutzer findById (@PathVariable ("id") Long ID); Fangen Sie noch einmal an und stellen Sie fest, dass alles in Ordnung ist.
Frage 3: Multi-Parameter-Problem
@RequestMapping (value = "/user/name", method = requestMethod.get) Benutzer findByusername (endgültiger String -Benutzername, endgültige String -Adresse);
Bei Beginn des Dienstes wird die folgende Ausnahme gemeldet:
Verursacht durch: java.lang.ilgelegalstateException: Methode hat zu viele Körperparameter: öffentliches abstraktes com.chhliu.springboot.restful.vo.user com.chhliu.springboot.restful.Feignclient.userFeignclient.findbyusername (Java.Lang.Lang.Lang.Lang.Lang.Lang.Lang.Lang.String.String.sting.sting.string.string.string.string.string.string.sting.sting.sting.sting.sting.sting.String.String.sting.String.String.String.String.String. -Sting -. -Sting -. -Sting -. -Sting -. -Sting -. -Sting -. -Sting -. -Sting -. -Stift.
Ursache für Ausnahme: Wenn die GET -Anfrage gesendet wird, müssen Sie die @RequestParam -Annotation vor dem Anforderungsparameter hinzufügen, und der Controller kann diese Annotation nicht hinzufügen, um sie zu ändern.
Die Lösung für das obige Problem ist wie folgt:
@RequestMapping (value = "/user/name", method = requestMethod.get) Benutzer findByUnername (@RequestParam ("Benutzername") Final String Benutzername, @RequestParam ("Adresse") endgültige String -Adresse); Frage 4: Anforderungsmethode 'Post' nicht unterstützt
Beispiel für Fehlercode:
@RequestMapping (value = "/user/name", method = requestMethod.get) Benutzer findByUnername (endgültiger String -Benutzername, @RequestParam ("Adresse") endgültige String -Adresse); Hinweis: Der obige Benutzernameparameter wird nicht mit @RequestParam -Annotation geändert. Wenn Sie eine Anfrage senden, werden Sie feststellen, dass der angerufene Service die Anfrage "Post" nicht unterstützt hat. Wir verwenden eindeutig die GET -Methode. Warum wird der angerufene Dienst als Postmethode angesehen? Der Grund dafür ist, dass der Benutzername, wenn er nicht durch @RequestParam -Annotation geändert wird, automatisch als Anforderungsbehörde behandelt wird. Solange es eine Körperschaft gibt, wird sie als Postanfrage von TEIGN angesehen, sodass der gesamte Dienst als Postanforderung mit einem Anforderungsparameter und einem Körper gesendet wird.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.