Dieser Artikel untersucht hauptsächlich den relevanten Inhalt über die korrekte Verwendung von @RequestBody wie folgt.
Vor kurzem übernahm ich einen Job bei einem Kollegen, der gerade gehen wollte. Das Projekt, das ich übernahm, wurde mit Springboot gebaut. Ich habe diese Schreibmethode gesehen:
@RequestMapping ("dothis") public String dothis (httpServletRequest Request, @RequestParam ("ID") Long ID, // Benutzer id @RequestParam ("Back_url") Back_url, // Rückrufadresse @RequestBody Testentity JSON_DATA // JSON // JSON DATA, FÜR JAVA ENTITY CLASS CLASS.Dies ist eine Anforderungszuordnmethode, und geben Sie dann mit dem Browser eine URL ein: http://127.0.0.1:8080/test/dothis?id=1&back_url=url&json_data= <"code"
Verwenden Sie in dieser Methode @RequestParam, um die Parameter zu erhalten, und verwenden Sie dann @RequestBody, um die Parameter im JSON -Format in den Java -Typ umzuwandeln
Beim Laufen wurde der Fehler gefunden: Die erforderliche Anforderungskörper fehlt
@RequestBody erfordert die Verwendung von Mappingjackson2HttpMessageConverter zum Laden, aber die offizielle Dokumentation von Springboot erwähnt, dass dies bereits standardmäßig geladen wird und es keine Fehler beim Schreiben von JSON -Zeichenfolgen und JavaBeans gibt.
Wenn man bedenkt, dass es ein Problem sein sollte, einen Inhaltstyp zu beantragen
Um diese Idee zu bestätigen, schreiben Sie selbst eine Anfrageklasse:
String add_url = "http://127.0.0.1:8080/test/dothis"; URL URL = neue URL (add_url); HttpurlConnection connection = (httpurlConnection) url.openconnection (); Connection.SetDoInput (true); connection.setDooutput (true); Connection.SetRequestMethod ("Post"); Connection.SetUSecaches (Falsch); connection.setInstanceFollowredirects (true); Connection.SetRequestProperty ("Content-Typ", "Application/JSON"); Connection.Connect (); DataOutputStream out = new DataOutputStream (connection.getOutputStream ()); JsonObject obj = new JsonObject (); Obj.put ("Code", -1002); obj.put ("message", "msg"); out.writebytes (obj.tostring ()); out.flush (); out.close ();Die Anfrage ist immer noch fehlgeschlagen. Nach dem Debuggen stellte ich fest, dass alle @RequestParam -Anmerkungen entfernt werden müssen, um erfolgreich zu sein.
Zusammenfassen
1. @RequestBody muss alle Anforderungsparameter als JSON analysieren. Daher kann der Schlüssel = Wert nicht in die Anforderungs -URL aufgenommen werden. Alle Anforderungsparameter sind ein JSON
2. Wenn Sie die URL direkt durch den Browser eingeben, kann @RequestBody das JSON -Objekt nicht erhalten. Sie müssen die Java-Programmierung oder die AJAX-basierte Methodenanforderung verwenden und Content-Typ auf Anwendung/JSON festlegen
Im obigen Bereich geht es darum, die korrekte Verwendung von @RequestBody zu interpretieren, und ich hoffe, dass es für alle hilfreich sein wird. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!