在1个POST请求中发送2个对象

时间:2014-07-16 16:41:04

标签: javascript angularjs

我正在使用Angular并尝试将请求(使用$resource)发送到外部API,但我需要在2个不同的对象中发送数据,而我目前只发送1个。 API要求用户特定的操作在每个请求中包含auth_token

如果没有auth_token,请求将如下所示:

APIShop.reg(Cart.data,
function(success) {}, 
function(failure) {}
);

APIShop看起来像这样:

app.provider('APIShop', function(API_URL) {
    this.$get = ['$resource', function($resource) {
        var Campaign = $resource(API_URL.url + API_URL.loc + ':service/:action/', {service: '@service', action: '@action'},   { 
            'reg':  {method:'POST', isArray: false, params: {service: 'account', action: 'order'}},
            'update':  {method:'PUT', isArray: false, params: {service: 'account', action: 'order'}}
        });
        return Campaign;
    }];
});

Cart.data是一个看似如下的对象:{country: 'US', city: 'Seattle, WA'}

但我还需要在同一请求中的{auth_token: '432078e36c7a42e3c6febdac95f38c1549de6218'}对象中添加User。直接的解决方案可能是将auth_token字段添加到Cart对象,但是我将这些数据存储在应用程序中的各种模型中User,{{1}等等,我想在ShoppingCart对象中保留auth_token。

我试过

User

没想到它会起作用,但它没有。 auth_token最终显示为APIShop.reg(Cart.data, User.auth_token function(success) {}, function(failure) {} ); ,而不是Request Payload

我也不想直接发送Query String Parameters之类的东西(而不是发送对象),因为这迟早会成为维护的噩梦。

如何在不将令牌添加到{country: Cart.data.country, city: Cart.data.city, auth_token: '432078e36c7a42e3c6febdac95f38c1549de6218'}的情况下发送两条信息(因为它意味着我需要将其添加到每个对象中),或者列出所有字段对象

1 个答案:

答案 0 :(得分:0)

重构APIShop以接收数组:

APIShop.reg([Cart.data, User.auth_token],
function(success) {}, 
function(failure) {}
);

或重构它以接收映射对象:

APIShop.reg({ data : Cart.data, auth : User.auth_token },
function(success) {}, 
function(failure) {}
);