【问题标题】:set default/additional payload in ngResource在 ngResource 中设置默认/附加负载
【发布时间】:2014-02-06 16:42:09
【问题描述】:

我将以下资源定义为名为“用户”的服务:

return $resource('/user', {}, {
    login: {
        url: 'user/login',
        method: 'PUT', 
        headers: {
            'Content-Type': 'application/json',
            'Accept': 'application/json'
        }
    }
});

我可以使用它在控制器内部登录,如下所示:

User.login({
                    Password: $scope.password,
                    UserName: $scope.name,
                    OsModel: Os.model,
                    OsVersion: Os.version
                });

(Os 是另一个提供一些值的服务)。 问题是这个资源也将在其他一些控制器中使用,我不想在不同的控制器周围和内部设置不相关的值,如 OsModel 和 OsVersion,所以想法是在资源定义的服务中设置这两个值将登录操作设置为一些默认值,以便将它们设置在有效负载正文中。

我尝试使用 params 键,但它会将这些值作为查询参数发送,并且不会将它们添加到请求有效负载中,而且我在 angular 文档中没有找到任何其他内容。有什么方法可以在角度上做到这一点?

我正在使用 angular v 1.2.11。

【问题讨论】:

    标签: angularjs angularjs-resource


    【解决方案1】:

    好的,我最终在 $resource 定义中使用了 transformRequest,如下所示:

    return $resource('/user', {}, {
        login: {
            url: 'user/login',
            method: 'PUT', 
            headers: {
                'Content-Type': 'application/json',
                'Accepts': 'application/json'
            },
            transformRequest: function(data) {
                data.OsModel = Os.model;
                data.OsVersion = Os.version;
    
                return JSON.stringify(data);
            }
        }
    });
    

    不确定这是否是最优雅的方式,但这对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      • 1970-01-01
      相关资源
      最近更新 更多