Dan*_*Fox 4 javascript parameters http
是否有任何javascript函数,来解析http头的第一行?
GET /page/?id=173&sessid=mk9sa774 HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
网址已编码.
我想得到一个对象,像这样:
{
"method" : "GET",
"url" : "/page/",
"parameters": {
"id" : 173,
"sessid" : "mk9sa774"
}
}
Run Code Online (Sandbox Code Playgroud)
我搜索了很多,但我没有找到任何有用的东西.
提前致谢,
首先你可以拆分空格:
var lineParts = line.split(' ');
Run Code Online (Sandbox Code Playgroud)
现在您可以获取方法,未解析的路径和版本:
var method = lineParts[0];
var path = lineParts[1];
var version = lineParts[2];
Run Code Online (Sandbox Code Playgroud)
然后,您可以将路径拆分为查询字符串和非查询字符串部分:
var queryStringIndex = path.indexOf('?');
var url, queryString;
if(queryStringIndex == -1) {
url = path, queryString = '';
}else{
url = path.substring(0, queryStringIndex);
// I believe that technically the query string includes the '?',
// but that's not important for us.
queryString = path.substring(queryStringIndex + 1);
}
Run Code Online (Sandbox Code Playgroud)
如果有查询字符串,我们可以将其拆分为key=value字符串:
var queryStringParts = [];
if(queryStringIndex != -1) {
queryStringParts = queryString.split('&');
}
Run Code Online (Sandbox Code Playgroud)
然后我们可以将它们取消并将它们填充到一个对象中:
var parameters = {};
queryStringParts.forEach(function(part) {
var equalsIndex = part.indexOf('=');
var key, value;
if(equalsIndex == -1) {
key = part, value = "";
}else{
key = part.substring(0, equalsIndex);
value = part.substring(equalsIndex + 1);
}
key = decodeURIComponent(key);
value = decodeURIComponent(value);
parameters[key] = value;
});
Run Code Online (Sandbox Code Playgroud)
如果你真的想,那么你可以将所有数据放入一个对象:
return {
method: method,
url: url,
version: version,
parameters: parameters
};
Run Code Online (Sandbox Code Playgroud)
如果您在浏览器环境中,这是唯一的方法.如果您正在使用Node.JS,它可以为您处理URL解析.
| 归档时间: |
|
| 查看次数: |
2091 次 |
| 最近记录: |