Bei der Axios-Post-Anfrage ist ein Fehler vom Typ 500 aufgetreten

Als der Autor ein Front-End-Formular zur Übergabe von Back-End-Daten schrieb, traten die folgenden Probleme auf

1. Problemszenario

Wenn ich axios verwende, um eine Post-Anfrage zu senden, tritt ein 500-Fehler auf.

Der Autor hat lange nach dem Fehler gesucht. Es gab kein Problem mit dem Code und der Back-End-Schnittstelle. Später stellte ich fest, dass das Problem bei der Entitätsklasse lag.

Wenn die Front-End-Post-Anfrage die Back-End-Schnittstelle anpasst, gibt die Back-End-Konsole den folgenden Fehler aus

Ich sehe eine Fehlermeldung, die besagt, dass es nicht deserialisiert werden kann. Was bedeutet das?

Lassen Sie mich näher darauf eingehen

2. Lösung

Erstens überträgt das Front-End-Formular JSON-Daten, daher sollten wir aus den folgenden Gründen @RequestBody zu den Methodenparametern der Back-End-Controller-Ebene hinzufügen

@RequestBody wirkt auf die formale Parameterliste und wird verwendet, um vom Front Desk gesendete Daten mit festem Format [XML-Format oder JSON usw.] in das entsprechende JavaBean-Objekt zu kapseln. Ein während der Kapselung verwendetes Objekt ist der standardmäßig konfigurierte HttpMessageConverter des Systems zum Parsen
. Kapseln Sie es dann in den formalen Parameter

Warum wird dann immer noch ein Fehler gemeldet?

Später durchsuchte der Autor Baidu unzählige Male und fand schließlich eine Lösung.

Fazit: Nur wenn Entitätsklassen über Parameterlose Konstruktoren verfügen, können Objekte serialisiert werden.

Also habe ich die @NoArgsConstructor-Methode zur Entitätsklasse hinzugefügt und dann http verwendet, um die Schnittstelle anzupassen. Die Front-End-Konsole reagierte normal.

3. Zusammenfassung und Reflexion

  • Serialisierung: Der Prozess der Konvertierung einer Datenstruktur oder eines Objekts in einen binären Bytestrom
  • Deserialisierung: Der Prozess der Konvertierung des während des Serialisierungsprozesses generierten binären Bytestroms in eine Datenstruktur oder ein Objekt
  • Objekte müssen vor der Netzwerkübertragung serialisiert werden (z. B. wenn RPC von einer Remote-Methode aufgerufen wird), und die Deserialisierung muss nach dem Empfang des serialisierten Objekts durchgeführt werden.
  • Beim Speichern von Objekten in Dateien ist eine Serialisierung und beim Lesen von Objekten aus Dateien eine Deserialisierung erforderlich.
  • Beim Speichern von Objekten in einer Cache-Datenbank (z. B. Redis) ist Serialisierung erforderlich, und beim Lesen von Objekten aus der Cache-Datenbank ist Deserialisierung erforderlich.

Bei der Serialisierung muss die Entitätsklasse die Serializable-Schnittstelle implementieren

Bei der Deserialisierung muss die Entitätsklasse über einen Konstruktor ohne Argumente verfügen.

Guess you like

Origin blog.csdn.net/m0_63732435/article/details/133500241