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

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

王林
Libérer: 2024-02-13 16:10:06
avant
868 Les gens l'ont consulté

向 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;
    }
}
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal