在Express Node JS中获取查询参数

时间:2018-12-07 03:51:14

标签: node.js express

URL包含#键之后的所有查询字符串 http://localhost:3002/callback#access_token=nQevH_hZSjs3qdOoLNnAIITwqd3lCdkq&expires_in=7200&token_type=Bearer

如何在#

之后访问参数

4 个答案:

答案 0 :(得分:1)

 var url = 'http://localhost:3002/callback#access_token=nQevH_hZSjs3qdOoLNnAIITwqd3lCdkq&expires_in=7200&token_type=Bearer';

 function getUrlParameter(name) {
    name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
    var regex = new RegExp('[\\#&]' + name + '=([^&#]*)');
    var results = regex.exec(url);
    return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, '    '));
};

 console.log(getUrlParameter('access_token'));
 console.log(getUrlParameter('expires_in'));
 console.log(getUrlParameter('token_type'));

答案 1 :(得分:0)

浏览器不会将#之后的任何内容发送到服务器。您可以
 仅在URL是从服务器生成或获得的情况下解析它。然后,您可以使用节点内置的url模块来解析url中的符号

答案 2 :(得分:0)

您可以使用substring()方法: 编辑:您可以从response.body获得的字符串。您必须使用body-parser或express.json

let str = "http://localhost:3002/callback#access_token=nQevH_hZSjs3qdOoLNnAIITwqd3lCdkq&expires_in=7200&token_type=Bearer";
    let index=str.indexOf("#");
    let res = str.substring(index+1);

输出: $ node server.js access_token=nQevH_hZSjs3qdOoLNnAIITwqd3lCdkq&expires_in=7200&token_type=Bearer

答案 3 :(得分:0)

最佳做法是使用?而不是#

因此您的网址应为

  

http://localhost:3002/callback?access_token=nQevH_hZSjs3qdOoLNnAIITwqd3lCdkq&expires_in=7200&token_type=Bearer

     

现在您可以使用以下方法获取查询参数

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

app.get('/callback', function(req, res){
  console.log('access_token: ' + req.query.access_token);
  console.log('expires_in: ' + req.query.expires_in);
  console.log('token_type: ' + req.query. token_type);
});

app.listen(3000);