Heim  >  Artikel  >  Backend-Entwicklung  >  Senden Sie POST an den Spring-Endpunkt und geben Sie den Status 400 an

Senden Sie POST an den Spring-Endpunkt und geben Sie den Status 400 an

王林
王林nach vorne
2024-02-13 16:10:06793Durchsuche

向 Spring 端点发送 POST,给出状态 400

Inhalt der Frage

Es scheint ein Problem bei der Übergabe des Parameters playerId vom Frontend an das Backend in einer React-Anwendung zu geben. Die Funktion „createGame“ im Spring-Controller ist für den Empfang des Parameters „playerId“ eingerichtet, der Wert wird jedoch vom Frontend mit Axios nicht korrekt übergeben. Habe versucht, long und string als Spieler-ID zu verwenden, aber das Problem besteht weiterhin. Habe immer noch Status 400!

Frühling

Reaktion

  1. Speichern Sie es als String-Parameter.
  2. Ich habe @PathVariable verwendet.
  3. Ich habe versucht, die Parameter direkt in Postman zu schreiben.
  4. Ich habe versucht, den Endpunkt zu ändern.
  5. Der andere Endpunkt, den ich nicht angezeigt habe (/login), funktioniert einwandfrei, es gibt also keine Probleme mit dem Proxy.

Problemumgehung

Im geteilten Reaktions-Screenshot sieht es so aus, als würden Sie einen JSON-Text senden.

Aber im Frühjahrscontroller verwenden Sie @requestparam.

Sieht so aus, als müssten Sie entweder den Reaktionsteil ändern, um eine URL wie „/api/games/{playerid}“ aufzurufen (damit die Spieler-ID als Teil der URL übergeben wird) oder den Spring-Controller aktualisieren, um @requestbody zu akzeptieren (und Erstellen Sie eine URL mit der Klasse mit dem Feld „playerid“), damit das gesamte Objekt als Anforderungstext übergeben werden kann.

Derzeit sendet React einen Text – aber Spring sucht nach URL-Abfrageparametern. Beide Teile müssen dasselbe tun – was auch immer es ist.

Die Änderungen an

Frühling sind wie folgt:

public ResponseEntity<String> createGame(@RequestBody PlayerRequest playerRequest) {
    Long playerId = playerRequest.getPlayerId();
    // other code goes here
}

public class PlayerRequest {
    private Long playerId;

    public Long getPlayerId() {
        return playerId;
    }

    public void setPlayerId(Long playerId) {
        this.playerId = playerId;
    }
}

Das obige ist der detaillierte Inhalt vonSenden Sie POST an den Spring-Endpunkt und geben Sie den Status 400 an. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen