我看不出代码有什么问题;我想使用一个PUT方法,但当我这样做时,API返回的响应是:
"errors": {
"$": [
"The JSON value could not be converted to MTE.API.Request.Supplier.PutSupplierRequest. Path: $ | LineNumber: 0 | BytePositionInLine: 2."
],
"request": [
"The request field is required."
]
}
我想要实现的是,通过可视化表格中的一系列数据,我可以编辑来自模型的信息.我认为问题就在那里,但我不知道为什么.其他方法运行良好(GET、POST和DELETE).
I structured the request like this:
For more context: I have a const to define the url: http://api.com/api/suplier
actualizarProveedor: async (proveedorData) => {
try {
const response = await axios.put(`${API_BASE_URL}`, proveedorData, {
headers: {
'Content-Type': 'application/json',
},
});
console.log('Actualizar Proveedor:', response.data);
return response.data;
} catch (error) {
console.error('Error en actualizarProveedor:', error);
throw error;
}
},
这就是数据如何发送到请求:
const handleGuardarEdicion = async (editedProveedor) => {
try {
await apiCompras.actualizarProveedor(editedProveedor.id, {
id: editedProveedor.id,
name: editedProveedor.nombre,
ruccode: editedProveedor.numeroRUC,
});
console.log('Proveedor actualizado exitosamente:', editedProveedor);
cargarProveedores();
} catch (error) {
console.error('Error al actualizar proveedor:', error);
}
};
最后,这是如何构建模型的:
<Dialog open={modalOpen} onClose={handleCloseModal}>
<DialogTitle>Editar Proveedor</DialogTitle>
<DialogContent>
<form>
<TextField
label="Nombre"
variant="outlined"
margin="normal"
fullWidth
required
value={selectedProveedor ? selectedProveedor.name : ''}
onChange={(e) => handleEditFieldChange('name', e.target.value)}
/>
<TextField
label="Código RUC"
variant="outlined"
margin="normal"
fullWidth
required
value={selectedProveedor ? selectedProveedor.ruccode : ''}
onChange={(e) => handleEditFieldChange('ruccode', e.target.value)}
/>
</form>
</DialogContent>
<DialogActions>
<Button onClick={() => { handleGuardarEdicion(selectedProveedor); handleCloseModal(); }} color="primary">
Cerrar
</Button>
</DialogActions>
</Dialog>
我进行了更改,将错误消息更改为以下内容:
"errors": {
"Id": [
"The field Id must be between 1 and 2147483647."
],
"Name": [
"The Name field is required."
],
"RUCCODE": [
"The RUCCODE field is required."
]
}
将此内容添加到请求中:
try {
const requestData = {
request: {
id: supplierData.id,
name: supplierData.name,
ruccode: supplierData.ruccode,
}
};