手動で行うのではなく、Joi を使用してクエリ パラメータを自動的にサニタイズできるかどうか疑問に思っていました。
これは私がルートのために行ったことです。
var querystring = require('querystring');
function dateToString(date) {
return moment(new Date(querystring.unescape(date))).toISOString();
}
function posts(request, reply) {
request.query.from = dateToString(request.query.from);
}
そして、これが Joi スキーマです。
var topPostsConfig = {
description: 'Top posts',
plugins: {
'hapi-swagger': {
order: 1
}
},
validate: {
query: {
form: Joi.date().iso().optional().default(moment().subtract(2, 'day').utc().format()).description('start date for query')
}
}
}
{
method: 'GET',
path: '/posts',
handler: posts,
config: topPostsConfig
}
Joi に、クエリ パラメータを自動的にサニタイズしてエスケープされていない文字にする特別な方法があるかどうか疑問に思っていますか?
編集:
リクエストは2016-02-05T20%3A26%3A34.916Z
ブラウザによってエスケープされます。Joi がそれを自動的にアンエスケープできれば、手動で行う必要はないと考えていました。