固定:我一口气更改了一些内容,因此我无法真正说出解决问题的方法,但基本上是:-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”},但是它是一个空对象。这是...
您可能不想使用您的状态。
感谢您的帮助