2014-04-14 71 views
0

我有以下信息的HTTP報文:的Javascript:閱讀node.js的HTTP消息

GET /something?name=joe HTTP/1.1 
Host: hostname:8080 
Connection: keep-alive 
... 

使用node.js,我該如何提取名稱字段?我試圖通過消息體查找並發現它是空的,我不確定我有什麼其他選項或如何獲取此值。在此先感謝

+0

你能分享你到目前爲止的相關代碼?您是否使用任何特定的HTTP服務器庫或框架?有些會創建一個'request.query'對象,它將'name'作爲一個屬性。但是,如果你只是使用Node自己的API,你必須['parse'](http://nodejs.org/api/url.html#url_url_parse_urlstr_parsequerystring_slashesdenotehost)['request.url'](http: //nodejs.org/api/http.html#http_message_url)。 –

回答

1

好並不總是需要使用快速簡單的HTTP服務器的解決方案,你也可以在內置的模塊是:

請求的結果:http://example:8080/user?name=Mike&age=32

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

http.createServer(function(req, res) { 
    var path = '', 
     parsed = url.parse(req.url, true); 

    if (parsed.pathname === '/user') { 

     // Requested: { protocol: null, 
     // slashes: null, 
     // auth: null, 
     // host: null, 
     // port: null, 
     // hostname: null, 
     // hash: null, 
     // search: '?name=Mike&age=32', 
     // query: { name: 'Mike', age: '32' }, 
     // pathname: '/user', 
     // path: '/user?name=Mike&age=32', 
     // href: '/user?name=Mike&age=32' } 
     console.log('Requested: ', parsed); 
     path = parsed.pathname; 
    } 

    res.end('Found path ' + path); 
}).listen(8080);