node.js - router教學 - res render用法




如何在Node.js的Express.js中獲取GET(查詢字符串)變量? (10)

Whitequark響應很好。 但是對於當前版本的Node.js和Express.js,它需要多一行。 確保添加'require http'(第二行)。 我已經在此發布了一個更完整的示例,顯示了此調用的工作方式。 一旦運行,在瀏覽器中輸入http://localhost:8080/?name=abel&fruit=apple ,您將得到一個基於代碼的酷響應。

var express = require('express');
var http = require('http');
var app = express();

app.configure(function(){
    app.set('port', 8080);
});

app.get('/', function(req, res){
  res.writeHead(200, {'content-type': 'text/plain'});
  res.write('name: ' + req.query.name + '\n');
  res.write('fruit: ' + req.query.fruit + '\n');
  res.write('query: ' + req.query + '\n');
  queryStuff = JSON.stringify(req.query);
  res.end('That\'s all folks'  + '\n' + queryStuff);
});

http.createServer(app).listen(app.get('port'), function(){
    console.log("Express server listening on port " + app.get('port'));
})

我們是否可以在Node.js中的查詢字符串中獲取變量,就像我們在PHP中的$_GET中獲取它們一樣?

我知道在Node.js中我們可以在請求中獲取URL。 有沒有一種方法來獲取查詢字符串參數?


2014年5月4日更新

舊答案保存在這裡: https://gist.github.com/stefek99/b10ed037d2a4a323d638https://gist.github.com/stefek99/b10ed037d2a4a323d638

1)安裝express: npm install express

app.js

var express = require('express');
var app = express();

app.get('/endpoint', function(request, response) {
    var id = request.query.id;
    response.end("I have received the ID: " + id);
});

app.listen(3000);
console.log("node express app started at http://localhost:3000");

2)運行app: node app.js

3)在瀏覽器中訪問: http://localhost:3000/endpoint?id=something

我已收到ID:某事

(自從我的回答以來,許多事情都發生了變化,我認為值得保持更新)


你應該可以做這樣的事情:

var http = require('http');
var url  = require('url');

http.createServer(function(req,res){
    var url_parts = url.parse(req.url, true);
    var query = url_parts.query;

    console.log(query); //{Object}

    res.end("End")
})

在Express中,使用req.query

req.params只獲取路由參數,而不是查詢字符串參數。 查看expresssails文件:

(req.params)檢查路由參數,例如:/ user /:id

(req.query)檢查查詢字符串參數,例如:?id = 12檢查urlencoded body params

(req.body),ex:id = 12要使用urlencoded請求體,req.body應該是一個對象。 這可以通過使用_express.bodyParser中間件來完成。

也就是說,大多數情況下,你想得到一個參數的值,而不管它的來源。 在這種情況下,使用req.param('foo')

無論變量是在路由參數,查詢字符串還是編碼請求主體中,都會返回該參數的值。

注意 - 如果你的目標是獲得所有三種類型的請求參數(類似於PHP的$_REQUEST ),那麼你只需要將這些參數合併在一起 - 這就是我如何在Sails中設置的參數。 請記住,路徑/路徑參數對象( req.params )具有數組屬性,因此順序很重要(儘管這可能會在Express 4中更改


它非常簡單:

示例網址:

http://.com:3000/activate_accountid=3&activatekey=$2a$08$jvGevXUOvYxKsiBt.PpMs.zgzD4C/wwTsvjzfUrqLrgS3zXJVfVRK

您可以使用以下命令打印查詢字符串的所有值:

console.log("All query strings: " + JSON.stringify(req.query));

產量

所有查詢字符串:{“id”:“3”,“activatekey”:“$ 2a $ 08 $ jvGevXUOvYxKsiBt.PpMs.zgzD4C / wwTsvjz fUrqLrgS3zXJVfVRK”}

打印具體:

console.log("activatekey: " + req.query.activatekey);

產量

activatekey:$ 2a $ 08 $ jvGevXUOvYxKsiBt.PpMs.zgzD4C / wwTsvjzfUrqLrgS3zXJVfVRK


對於Express.js你想要做req.params

app.get('/user/:id', function(req, res) {
  res.send('user' + req.params.id);    
});

您可以使用快遞^ 4.15.4:

var express = require('express'),
    router = express.Router();
outer.get('/', function (req, res, next) {
    console.log(req.query);
});

希望這有助於...乾杯,


我從其他答案中了解到,並決定在整個網站中使用此代碼:

var query = require('url').parse(req.url,true).query;

然後你可以打電話

var id = query.id;
var option = query.option;

get的URL應該在哪裡

/path/filename?id=123&option=456

是的,您可以訪問req.url並將內置url模塊訪問為url.parse手動:

var url = require('url');
var url_parts = url.parse(request.url, true);
var query = url_parts.query;

但是,在expressjs中它已經為您完成了,您可以簡單地使用req.query

var id = req.query.id; // $_GET["id"]

有兩種方法可以通過GET方法傳遞參數

方法1:傳遞參數如/ routename /:paramname的MVC方法
在這種情況下,您可以使用req.params.paramname來獲取參數值。例如,參考下面的代碼,我期待Id作為參數
鏈接可能是這樣的: http://myhost.com/items/23 : http://myhost.com/items/23

var express = require('express');
var app = express();
app.get("items/:id",function(req,res){
var id = req.params.id;
//further operations to perform
});
app.listen(3000);

方法2:一般方法:使用'?'作為查詢字符串傳遞變量 操作者
例如,請參閱下面的代碼,我期待Id作為查詢參數
鏈接可能類似於: http://myhost.com/items?id=23 : http://myhost.com/items?id=23

var express = require('express');
var app = express();
app.get("/items",function(req,res){
    var id = req.query.id;
    //further operations to perform
});
app.listen(3000);






express