我在nodejs中使用expressjs来创建我的api。现在,当我发送一个字符串为" Wed Jul 29 2015 17:34:22 GMT + 0830"在查询字符串中的get请求中并将其解析为url.parse(uri,true).query它给了我一个字符串" Wed Jul 29 2015 17:34:22 GMT 0830"没有' +'。如何获得字符串中的+
使用代码进行更新
getEventTimeFromurl: function(ctx){
var decodeURI = decodeURIComponent(ctx.req.url);
var eventTime = undefined;
const strEventTime = "eventTime=";
var eventTimeindex = decodeURI.search(strEventTime);
if (eventTimeindex == -1)
throwError.badRequest(ctx, 101, 'Invalid event time');
var aftereventtime = decodeURI.substring(eventTimeindex + strEventTime.length);
var endIndex = aftereventtime.indexOf('&');
if (endIndex == -1)
eventTime = aftereventtime;
else
eventTime = aftereventtime.substring(0, endIndex);
return eventTime;
}
此处eventTime =位于查询字符串中,其中包含' +'签署类似'星期一2015年8月3日13:27:24 GMT + 0930'
答案 0 :(得分:1)
您可以将字符串编码为URI格式。
.state('mailVerification', {
url: "/verifyMail?id",
templateUrl: "app/views/common/emailVerification.html",
resolve: {
id: function($stateParams){
return $stateParams.id;
}
}
controller: 'accountCtrl',
data: {
authorizedRoles: [USER_ROLES.all]
}
})
使用encodedString在查询字符串中传递它。
答案 1 :(得分:0)
您可以先用URL编码的版本(url.parse()
)替换其中的+
个字符,而不是让%2b
解析查询字符串,然后手动解析查询字符串:
var qs = require('querystring');
var querystring = url.parse(uri).query.replace(/\+/g, '%2b');
var query = qs.parse(querystring);
虽然这假设需要保留查询字符串中的所有 +
个字符。如果这不可接受,您可以修改正则表达式以仅匹配特定情况(如时区表示法)。
编辑:结合Express,它看起来像这样:
app.get('/', function(req, res) {
var querystring = url.parse(req.url).query.replace(/\+/g, '%2b');
var query = qs.parse(querystring);
...
});