Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从node js中的端点获取querystring参数_Javascript_Node.js - Fatal编程技术网

Javascript 如何从node js中的端点获取querystring参数

Javascript 如何从node js中的端点获取querystring参数,javascript,node.js,Javascript,Node.js,我正在创建具有多个端点的简单节点服务器,并希望将查询字符串传递到端点。虽然我能够成功地创建端点,但无法在端点中获取querystring值。以下是我正在使用的示例代码:- const http = require('http'); var url = require('url'); var fs = require("fs"); const hostname = '127.0.0.1'; const port = 3000; http.createServer(function (req, re

我正在创建具有多个端点的简单节点服务器,并希望将查询字符串传递到端点。虽然我能够成功地创建端点,但无法在端点中获取querystring值。以下是我正在使用的示例代码:-

const http = require('http');
var url = require('url');
var fs = require("fs");
const hostname = '127.0.0.1';
const port = 3000;
http.createServer(function (req, res) {
    var data = fs.readFileSync('HolidaysList.json');
    let holidays = JSON.parse(data);
    res.statusCode = 200;
    var url_parts = url.parse(req.url, true);
    let month = url_parts.query.month;
    console.log(month);
    res.setHeader('Content-Type', 'text/plain');
    if (req.url === '/') {
        res.end('Holiday List.\n');
    } else if (req.url === '/public') {
        res.end('Public Holiday List.\n');
        console.log(holidays.public);
    }
    else if (req.url === '/flexible') {
        res.end('Flexible Holiday List.\n');
        console.log(holidays.flexible);
    }
}).listen(port, hostname);
console.log('Server running at http://' + hostname + ':' + port + '/');
我想用/public?month=May query string来处理请求。

您可以使用节点JS提供的模块来解析和检索查询参数。querystring有一个名为parse的函数,该函数将查询转换为一个对象,您可以根据需要使用该对象

const http = require('http');
var url = require('url');
var fs = require("fs");
const querystring = require('querystring'); // Require the querystring module
const hostname = '127.0.0.1';
const port = 3000;
http.createServer(function (req, res) {
    var data = fs.readFileSync('HolidaysList.json');
    let holidays = JSON.parse(data);
    res.statusCode = 200;
    var url_parts = url.parse(req.url, true);
    let month = url_parts.query.month;
    console.log(month);
    res.setHeader('Content-Type', 'text/plain');
    if (req.url === '/') {
        // Use querystring.parse() to retrieve query string params
        const queryParams = queryString.parse(req.query)
        console.log(queryParams)
        res.end('Holiday List.\n');
    } else if (req.url === '/public') {
        res.end('Public Holiday List.\n');
        console.log(holidays.public);
    }
    else if (req.url === '/flexible') {
        res.end('Flexible Holiday List.\n');
        console.log(holidays.flexible);
    }
}).listen(port, hostname);
console.log('Server running at http://' + hostname + ':' + port + '/');


由于您没有使用任何内置queryString解析的http框架(如Express),因此您必须自己从URL解析queryString。node.js中内置了多个iLibrary来帮助您,例如
url
querystring
模块。