AngularJS $资源GET参数出现在URL中

时间:2015-09-06 16:46:15

标签: angularjs node.js express angular-resource

当Params作为URL的一部分附加时,我的REST后端[基于NodeJS / express / mongojs]抱怨404(未找到)。后端休息接口编码如下;

var express = require('express');
var router = express.Router();
router.get('/login', auth.signin); //auth.signin is code to verify user

以上REST服务由基于AngularJS的前端通过$ resource使用,如下所示;

定义:

angular.module('myapp').factory('signinmgr', function($resource) {
    return $resource("http://localhost:3000/login", {}, {
        'get': {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json'
            }
        }});

用法:

signinmgr.get({'username':'myname', 'password':'mypass'}, function(data){
        //success 
    }, function(x){
        //failed
    });

问题:

  1. 上面的前端代码生成一个URL来使用REST服务,其中参数是URL的一部分,即http://localhost:port/login?username=myname&password=mypass [如果我使用GET方法,POST就可以了]。我希望我的前端将URL保持为http://localhost:port/login并通过正文发布任何参数,因为后端使用req.body.paramName来读取这些参数。 [实际解决方案]

  2. 如果(1)无法完成,并且我的前端正在发送params作为URL的一部分,我需要帮助以了解如何装备我的后端以允许带有参数的URL,以便后端不会返回404作为基本网址http://localhost:port/login已经存在。

  3. PS:对于(1),我尝试了this thread数据:{username:'',密码:''}但没有用。如果我遗漏了一些非常明显的或一些概念,请帮忙。

2 个答案:

答案 0 :(得分:1)

尝试使用$http服务:

angular.module('myapp').factor('signinmgr', function($http) {
    return {
        login: function (username, password) {
            $http.post("http://localhost:3000/login", {
                username: username,
                password: password
            }
        }
    };
});

signinmgr.login('myname', 'mypass').then(function(data){
    //success 
}, function(x){
    //failed
});

答案 1 :(得分:1)

我的nodejs / expressjs后端接收的每个请求都有三个传递属性的位置;

document.getElementById('lang').onchange = function() {
    var dynamicTitle = this.value == 1 ? 'english title' : 'danish title';
    marker.setTitle(dynamicTitle);
}  

如果我想使用GET方法,我的问题(1)无法修复,因为GET请求参数作为URL的一部分可见,即http://localhost:port/login?username=myname&password=mypass。要发送我的用户名/密码,我必须使用POST作为params{} query{} body{} 的一部分发送参数。

我的问题(2)是我在使用GET并错误地在请求的body{}中查找参数。相反,在GET请求中作为URL的一部分传递的参数将添加到请求的body{}

相关问题