Сначала вы можете разделить на пробелы:
var lineParts = line.split(' ');
Теперь вы можете получить метод, непарсированный путь и версию:
var method = lineParts[0];
var path = lineParts[1];
var version = lineParts[2];
Затем вы можете разделить путь начасти строки запроса и строки, не являющиеся запросом:
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);
}
Если есть строка запроса, мы можем затем разбить ее на key=value
строки:
var queryStringParts = [];
if(queryStringIndex != -1) {
queryStringParts = queryString.split('&');
}
Затем мы можем удалитьи вставьте их в объект:
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;
});
Если вы действительно хотите, вы можете поместить все эти данные в объект:
return {
method: method,
url: url,
version: version,
parameters: parameters
};
Если вы в браузересреда, это единственный способ сделать это.Если вы используете Node.JS, может обработать для вас разбор URL .