使用快速框架我做了一个中间件,它处理一个以日期为参数的URI。
app.get("/:date",function(req,res){
var result;
var myDate=req.params.date
if(moment(myDate).isValid()){
//some code here
}
else {
//some code here
}
}
和http是例如: https://theweb.com/December%2015,%2020
中间件运行良好。但如果http在%中完成 https://theweb.com/December%2015,% 它给出了一个错误:
URIError: Failed to decode param '/December%2015,%'
我想要的是将消息显示中的错误转换为错误请求。
答案 0 :(得分:0)
您可以注册一个错误处理程序,如下所示:
app.use(function(err, req, res, next) {
console.log('hit error handler');
res.sendStatus(err.status || 500);
});
请注意,即使您不使用所有参数,该函数也必须具有4个参数。然后,此函数可以以您认为合适的任何方式响应,在我的示例中,我刚刚发送回状态代码。对于err.status
,快速设置URIError
为400。
答案 1 :(得分:0)
我已经使用过这个中间件,但没有结果。当URI为https://myweb.com/December%2015,%
时,它仍会出现相同的错误URIError: Failed to decode param '/December%2015,%'
可能是代码的位置
var express = require('express');
var moment=require("moment")
var app = express();
app.use(express.static('public'));
app.use(function(err, req, res, next) {
console.log('hit error handler');
res.sendStatus(err.status || 500);
});
app.get("/", function (request, response,next) {
response.sendFile(__dirname + '/views/index.html');
});
app.get("/:date",function(req,res){
var result;
var myDate=req.params.date //From here comes the error
if(moment.unix(myDate).isValid()){
// some code
result={/*some code*/}
} else if(moment(myDate).isValid()){
//some code
result={/*some code*/}
else {
result={/*some code*/}
}
res.json(result)
})