如何解决将日期作为网址参数发送给API
我正在尝试将日期时间值作为url参数传递给后端java api,我正在使用GET方法发送请求。但是在api端,我只得到日期时间字符串的一部分,而日期时间字符串的其他部分中断了。
我的反应代码
const handleStartDate = date => {
setStartDate(date);
const formattedDttm = format(date,"dd.MM.yyyy H:mm:ss",{ timeZone: "Asia/Kolkata" });
console.log(formattedDttm);
DataService.findByDttmOfSale(formattedDttm)
.then(response => {
Entry.price = response.data.price;
}).catch(e => {
if (e.response && e.response.data) {
setMessage(e.response.data.message);
setAlertHeading("Error!");
setAlertVariant("danger");
setShow(true);
console.log(e.response.data.message); // some reason error message
}
console.log(e);
});
};
在Java后端
@GetMapping("/FromDttmOfSale/{dttm_of_sale}")
public TestMO getFromDateTimeOfSale(@PathVariable(value = "dttm_of_sale") String
dateTimeOfSale) throws Exception {
System.out.println(" get mo from date time of sale date value is = " + dateTimeOfSale);
TestMO testMO = fuelService.getFuelPriceByDateTime(dateTimeOfSale);
return testMO ;
}
我从react js输入的日期的格式为11/10/2020 8:42 AM
,其中在后端,我仅将日期字符串的一部分作为date time of sale date value is = 11.10
与转换期间删除日期字符串的位置相同。我也尝试过更改格式,但收到相同的错误
解决方法
最好将日期作为字符串传递,然后在后端将其格式化为日期。
,我将我的日期参数从11/10/2020 8:42 AM
更改为11 10 2020 8:42 AM
,并且它开始工作。似乎在url中发送特殊字符有限制
我遇到了同样的错误,我使用两个选项解决了这个问题,第一个是使用 moment 库,第二个是我认为在将日期发送到后端之前更好地将日期转换为 ISOString。
export async function getAssessmentsByDate(dateInit,dateEnd,clientId) {
try {
const response = await getApi().get(
`/assessment/${clientId}?dateInit=${dateInit.toISOString()}&dateEnd=${dateEnd.toISOString()}`,{}
);
return response;
} catch (error) {
return { status: 400,message: 'Cant..' };
}
}
在后端(nodejs)中,我是这样接收的。我建议您在使用之前验证字符串。它非常适合我。
const getClientAssessmentByDate = async (req,res) => {
try {
const clientId = parseInt(req.params.id);
const dateInit = req.query.dateInit;
const dateEnd = req.query.dateEnd;
/** .... */
/** 3. find evaluations */
const results = await AssessmentResult.findAll({
where: {
createdAt: {
[Op.between]: [dateInit,dateEnd]
}
}
})
/** .... */
} catch (e) {
return res.status(500).send('error processing request');
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。