React Post不显示标题

问题描述 投票:0回答:1

固定:我一口气更改了一些内容,因此我无法真正说出解决问题的方法,但基本上是:-API需要int或long,并且我正在发送String .. parseInt解决了它。我最初声明了一个数据对象:

const [data, setData] = useState({

})

具有我稍后将发送的所有值(以及正确的数据类型!如果我不确定,null对于初始化似乎工作得很好)。-另一个问题是我在POST请求之前将所有数据合并到一个钩子中,因为它是异步的。-最后但最重要的是,这可能就是问题所在(由于EntiendoNull和JMadelaine),我将数据初始化为[]而不是{},因此我在数组内发送对象。因此[C0 POST时API中的]消息。.------------------------------------------------- -------------------------------------------------- -------------------------------。

我有一个发帖请求无法正常工作的问题。

[基本上,标题不正确,应该为JSON parse error: Cannot deserialize instance of但是,它是一个空对象。这是我执行POST的位置:

{"content-type": "application/json"}

这是导航器控制台上res的内容:

const [data, setData] = useState([]);
    const createMission = async (e) => {
        setData({
            ...data,
            nom:state.missionName,
            id_client:state.currentClientKey,
            id_consultant:state.currentConsultantId,
            id_manager:1,
            id_ro:state.currentROKey,
            id_rc:state.currentRCKey,
            detail:state.missionDescription,
            adresse:state.adresse,
            frequence_eval:6,
            date_debut:state.startDate,
            date_fin:state.endDate,
            metier:state.metier
        });
        let headers = {
          headers: {'Content-Type': 'application/json'}
        };
        axios.post('http://localhost:8080/mission',data,{"headers" : headers})
        .then(res => {
            console.log(res);
        });

数据发送正常,返回200状态,但是如您所见,标头中有一个空对象,数据是一个空字符串 {…} ​ config: Object { url: "http://localhost:8080/mission", method: "post", data: "{\"nom\":\"\",\"id_consultant\":null,\"id_manager\":1,\"detail\":\"\",\"adresse\":\"\",\"frequence_eval\":6,\"date_debut\":null,\"date_fin\":null,\"metier\":null}", … } ​ data: "" ​ headers: Object { } ​ request: XMLHttpRequest { readyState: 4, timeout: 0, withCredentials: false, … } ​ status: 200 ​ statusText: "" ​ <prototype>: Object { … }

有趣的是,我在另一个组件上执行的操作几乎完全相同,并且可以正常工作:在这种情况下,我什至不指定标题。

""

这是日志:

const createClient = async (e) => {
        axios.post('http://localhost:8080/client', {nom:state.nomClient})
        .then(res => {
            console.log(res);
        });
    };

API是相同的,它是一个@RequestBody。在这里执行任务:

 {…}
    ​
    config: Object { url: "http://localhost:8080/client", method: "post", data: "{\"nom\":\"aze\"}", … }
    ​
    data: Object { id: 372, nom: "aze" }
    ​
    headers: Object { "content-type": "application/json" }
    ​
    request: XMLHttpRequest { readyState: 4, timeout: 0, withCredentials: false, … }
    ​
    status: 200
    ​
    statusText: ""
    ​
    <prototype>: Object { … }

和这里的客户端(第二个例子也很好):

@PostMapping
    public Mission addMission (@RequestBody MissionBean missionBean){
        Optional<Client> optionalClient = clientRepository.findById(missionBean.id_client);
        Optional<Consultant> optionalConsultant = consultantRepository.findById(missionBean.id_consultant);
        Optional<Utilisateur> optionalManager = utilisateurRepository.findById(missionBean.id_manager);
        Optional<Utilisateur> optionalRo = utilisateurRepository.findById(missionBean.id_ro);
        Optional<Utilisateur> optionalRc = utilisateurRepository.findById(missionBean.id_rc);
        if (optionalClient.isPresent() && optionalManager.isPresent() && optionalConsultant.isPresent() && optionalRo.isPresent() && optionalRc.isPresent()){
            Mission newMission = new Mission(
                    missionBean.nom,
                    optionalClient.get(),
                    optionalConsultant.get(),
                    optionalManager.get(),
                    optionalRo.get(),
                    optionalRc.get(),
                    missionBean.detail,
                    missionBean.adresse,
                    missionBean.frequence_eval,
                    missionBean.date_debut,
                    missionBean.date_fin,
                    missionBean.metier
            );
            missionRepository.save(newMission);
            return newMission;
        }
        return null;
    }

我尝试了许多不同的方法来指定标题,但是仍然无法正常工作。该请求工作良好(200),但数据无法理解为API端,没有报头,因此将空字符串作为数据,对此我有点陌生,所以我被困在这里。当我检查数据库时,没有添加任何新内容。

编辑:每次发出请求时,都会从API收到一条消息:

@PostMapping
    public Client addClient (@RequestBody Client client){
        clientRepository.save(client);
        Critere critere = new Critere(client,"Ponctualité",true);
        Critere critere2 = new Critere(client,"Assiduité",true);
        Critere critere3 = new Critere(client,"Intégration",true);
        critereRepository.save(critere);
        critereRepository.save(critere2);
        critereRepository.save(critere3);
        return client;
    }

也许这可以帮助指出问题

Edit2:我的一些值应该是int,但以String形式出现(只是注意到了)将解决该问题并重试]]

hi :)我遇到了一个帖子请求无法正常工作的问题。基本上,标题不正确,应该为{“ content-type”:“ application / json”},但是它是一个空对象。这是...

reactjs spring http-headers axios http-post
1个回答
1
投票

您可能不想使用您的状态。


0
投票

感谢您的帮助

© www.soinside.com 2019 - 2024. All rights reserved.