Maison  >  Article  >  développement back-end  >  Envoyer POST au point de terminaison Spring en donnant le statut 400

Envoyer POST au point de terminaison Spring en donnant le statut 400

王林
王林avant
2024-02-13 16:10:06795parcourir

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

Contenu de la question

Il semble y avoir un problème avec le passage du paramètre playerId du frontend au backend dans une application React. La fonction createGame dans le contrôleur Spring est configurée pour recevoir le paramètre playerId, mais la valeur n'est pas transmise correctement depuis le frontend à l'aide de Axios. J'ai essayé d'utiliser long et string comme playerId mais le problème persiste. J'ai toujours le statut 400 !

Printemps

Réaction

  1. Stockez-le en tant que paramètre de chaîne.
  2. J'ai utilisé @PathVariable.
  3. J'ai essayé d'écrire les paramètres directement dans Postman.
  4. J'ai essayé de changer le point de terminaison.
  5. L'autre point de terminaison que je n'ai pas montré (/login) fonctionne correctement, il n'y a donc aucun problème avec le proxy.

Solution de contournement

Dans la capture d'écran de réaction partagée, il semble que vous envoyez un corps json.

Mais, dans le contrôleur Spring, utilisez @requestparam.

On dirait que vous devez soit modifier la partie de réaction pour appeler une URL comme '/api/games/{playerid}' (pour que l'ID du joueur soit transmis dans le cadre de l'URL), soit mettre à jour le contrôleur Spring pour accepter @requestbody (et créez une URL avec une classe avec le champ "playerid") - afin que l'objet entier puisse être transmis en tant que corps de la requête.

Actuellement, React envoie un corps - mais Spring recherche les paramètres de requête d'URL. Les deux parties doivent faire la même chose, quelle qu’elle soit.

Les changements apportés à

spring sont les suivants :

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;
    }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer