【发布时间】:2016-06-14 21:17:21
【问题描述】:
我有一个 angularJS 应用程序,其 api 服务定义如下:
(function ()
{
'use strict';
angular
.module('myApp')
.factory('api', apiService);
/** @ngInject */
function apiService($resource)
{
var api = {};
// Base Url
api.baseUrl = 'http://localhost:37243/';
api.Auth = $resource(api.baseUrl + 'auth/:verb', {}, {
login: {
method: "POST",
params: {
verb: 'credentials'
}
},
logout: {
method: "GET",
params: { verb: 'logout' }
},
getSession: {
method: "GET",
params: { verb: 'session' }
}
});
return api;
}
})();
我正在从这样的 Auth 服务执行登录方法:
authService.login = function (user, success, error) {
var apiAuth = new api.Auth();
apiAuth.$login(user).then(
function (response) {
var loginData = response;
authService.getSession();
$rootScope.$broadcast(AUTH_EVENTS.loginSuccess);
success(loginData);
}, function (response) {
$rootScope.$broadcast(AUTH_EVENTS.loginFailed);
error(response);
});
};
api 调用正在工作,但它传递的是查询字符串中的有效负载,而不是数据有效负载。我想我的 $resource 配置不正确,但无法找出原因。
发送的内容:
http://localhost:37243/auth/credentials?password=Password1&username=admin
我想要发送的内容:
发布http://localhost:37243/auth/credentials {密码:'Password1',用户名:'admin'}
有什么想法吗?
【问题讨论】:
-
尝试替换登录资源中的动词参数
-
@Erez 我不是 100% 确定你的意思,但我已经尝试覆盖 url 以使其没有 :verb 参数,并从方法覆盖中删除了 param 对象,没有任何喜悦......?
-
登录:{ 方法:“POST”,参数:{ cerd: 'credentials' } },
-
或尝试添加 {verb: "@ver" }, 这里 $resource(api.baseUrl + 'auth/:verb', {verb: "@verb"}, {
-
没有区别;老实说-我不知道您为什么建议这样做-调用有效,但我想隐藏查询字符串参数;我不明白为什么它与动词有任何关系?你介意解释一下你的想法吗?
标签: angularjs angular-resource