In diesem Abschnitt werden wir untersuchen, wie Multi-Parameter-Anfragen mit TEFEL erstellt werden. Der Autor verwendet die Anfragen von GET und Post -Methoden, um Beispiele zu erklären. Die Anfrageprinzipien anderer Methoden (z. B. Löschen, Put usw.) sind gleich, und die Leser können sie selbst studieren.
Erhalten Sie Anforderungen mehrerer Parameter URL
Angenommen, die URL, die wir anfordern, enthält mehrere Parameter wie http: // microservice-Provider-user/get? Id = 1 & userername = zhang san, wie konstruieren ich sie?
Wir wissen, dass Spring Cloud vor vatemischer Spring -MVC -Annotation -Unterstützung hinzugefügt hat. Daher können wir es auch nach der Schreibmethode von Spring MVC versuchen:
@FeignClient ("MicroService-Provider-User")) öffentliche Schnittstelle UserFeignClient {@RequestMapping (value = "/get", method = requestMethod.get) öffentlicher Benutzer get0 (Benutzerbenutzer);}Diese Schreibmethode ist jedoch nicht korrekt, und die Konsole gibt eine ähnliche Ausnahme aus.
Feign.FeignException: Status 405 Lesen von UserFeignClient#get0 (Benutzer); Inhalt:
{"Timestamp": 1482676142940, "Status": 405, "Fehler": "Methode nicht erlaubt", "Ausnahme": "org.springframework
Aus der Ausnahme können wir feststellen, dass vor Ort die GET -Methode angeben, aber weiterhin die Post -Methode zum Senden der Anforderung verwendet.
Die richtige Art zu schreiben ist wie folgt:
(1) Methode 1
@FeignClient(name = "microservice-provider-user")public interface UserFeignClient { @RequestMapping(value = "/get", method = RequestMethod.GET) public User get1(@RequestParam("id") Long id, @RequestParam("username") String username);}Dies ist der intuitivste Weg. Die URL hat mehrere Parameter, und die Methoden in der vorgetäuschten Schnittstelle haben mehrere Parameter. Verwenden Sie die @RequestParam -Annotation, um anzugeben, welche angeforderten Parameter sind.
(2) Methode 2
Multi-Parameter-URLs können auch mit der Karte erstellt werden. Wenn es viele Ziel -URL -Parameter gibt, kann diese Methode verwendet werden, um das Schreiben der vorgeschlagenen Schnittstelle zu vereinfachen.
@FeignClient (name = "microService-provider-user") public interface userFeignClient {@RequestMapping (value = "/get", method = requestMethod.get) öffentlicher Benutzer get2 (@RequestParam Map <String, Object> Map);};};};};Beim Anruf können Sie Code ähnlich wie folgt verwenden.
öffentlicher Benutzer get (String -Benutzername, String -Kennwort) {HashMap <String, Objekt> map = maps.newhashMap (); map.put ("id", "1"); map.put ("Benutzername", "Zhang San"); Geben Sie dies zurück. Die Postanforderung enthält mehrere Parameter
Lassen Sie uns diskutieren, wie Sie eine Postanforderung erstellen, die mehrere Parameter mit Feign enthält. Angenommen, der Controller des Dienstleisters ist so geschrieben:
@RestControllerPublic Class UserController {@postmapping ("/post") öffentlicher Benutzerbeitrag (@RequestBody -Benutzer) {...}}Wie verwenden wir Tet, um sie anzufordern? Die Antwort ist sehr einfach: Beispiel:
@FeignClient (name = "microService-provider-user") public interface userFeignClient {@RequestMapping (value = "/post", method = requestMethod.post) öffentlicher Benutzer Post (@RequestBody-Benutzer);};};};};}; Tipps
(1) Einzelheiten finden Sie im Projekt Microservice-Provider-User-Multiple-Params und Microservice-Consumer-Movie-Feuch-Multiple-Params-Projekt im dazugehörigen Code dieses Buches.
(2) Zusätzlich zu den in diesem Abschnitt erläuterten Methoden können wir auch unseren eigenen Encoder schreiben, um Multi-Parameter-Anforderungen zu erstellen. Diese Methode hat jedoch höhere Codierungskosten und eine geringere Wiederverwendbarkeit von Code. Daher wird dieses Buch nicht wiederholt.
Verlängerte Lesung
(1) Ich hoffe
(2) Ausgabe empfohlen, native Annotationen vor vat vat zu verwenden: https://github.com/spring-cloud/spring-cloud-netflix/issues/659
(3) Es wird empfohlen, die Funktionalität von VEIGN zu verbessern: https://github.com/spring-cloud/spring-cloud-netflix/issues/1360
(4) Es wird empfohlen, die optionale Anforderungsbehörde zu unterstützen (derzeit meldet vorgegeben eine Ausnahme, wenn ein Null veröffentlicht wird): https://github.com/spring-cloud/spring-cloud-netflix/issues/1047
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.