我应该如何从Node Js中的Url中提取值

时间:2016-06-15 06:44:45

标签: javascript angularjs node.js

我最近开始在nodeJs上编程。

我正在使用Angular JS,资源将API调用为

demoApp.factory('class', function ($resource) {
      return $resource('/class/:classId', { classId: '@_classId' }, {
        update: { method: 'PUT' }
      });
    });

在Controller中,我有删除方法;

   // The class object, e {classId: 1, className: "Pro"}

$scope.deleteClass = function (class) {
        var deleteObj = new Class();
        deleteObj.classId = class.classId;
        deleteObj.$delete({classId : deleteObj.classId}, function() {
            growl.success("Class deleted successfully.");
            $location.path('/'); 
            },function () {
                growl.error("Error while deleting Class.");
            }
        ); 
    };

使用浏览器,我验证了呼叫:

http://localhost:3000/class/1

现在在节点Js中,我该如何从Url中提取值,

在server.js

app.use('/class', classController.getApi);

在classController.js

exports.getApi = function(req, resp){
    switch(req.method) {
        case 'DELETE':
            if (req) {
                // how to extract 1 from url.
            }
            else {
                httpMsgs.show404(req, resp);
            }
            break;        

我试过了,

console.log(req.params);
console.log(req.query);

但没有运气。

我正在看

    console.log(req._parsedUrl);
query: null,
pathname: '/class/1',
path: '/class/1',

任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:1)

这应该是一个来电权吗?您可以使用angular $ http服务,方法为get。用app.get('/ class',function)替换你的app.use('/ class')。然后,您可以使用req.param('classId')来检索数据。我认为它应该有用。

尝试将app.use更新为app.use('/ class /:classId'),然后尝试req.params.classId

答案 1 :(得分:0)

尝试使用req.hostname,如下所示:

`http://host/path

答案 2 :(得分:0)

选中source code

Tldr;

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

另请阅读节点网址上的answer