Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS和REST资源_Javascript_Angularjs_Rest - Fatal编程技术网

Javascript AngularJS和REST资源

Javascript AngularJS和REST资源,javascript,angularjs,rest,Javascript,Angularjs,Rest,因此,在名为“authService”的angular js应用程序中,我有以下资源: var userAreaLogin = $resource('/api/user_area/login'); var userAreaSignup = $resource('/api/user_area/signup'); var session = $resource('/api/user_area/getSession'); var userAreaLogout = $resource('/api/use

因此,在名为“authService”的angular js应用程序中,我有以下资源:

var userAreaLogin = $resource('/api/user_area/login');
var userAreaSignup = $resource('/api/user_area/signup');
var session = $resource('/api/user_area/getSession');
var userAreaLogout = $resource('/api/user_area/logout');
但这感觉不太正确,我只使用get方法,例如:

this.login = function(credentials) {
    var user = userAreaLogin.get(credentials, function() {
        ...
    });
};

this.signup = function(userInfo) {
    var signup = userAreaSignup.get(userInfo, function() {
        ...
    });
};
我对使用什么资源感到困惑,我应该有这样的资源吗

var session = $resource('/api/user/session');
var userArea = $resource('/api/user');

userArea.get(credentials); //should login the user?
userArea.post(credentials); //should signup the user?
session.delete(); //should logout the user?
session.get(); //should get the sessions of the logged user if any?

你走的方向是对的。 在一个设计良好的RESTAPI中,应该有这样的东西

POST   /users/sign_in      # Create a user session (signs in)
DELETE /users/sign_out     # Delete a user session (signs out)
POST   /users              # Create a new user resource
GET    /users/:id          # Get the user resource
基于这些API,您可以定义您的服务。我还建议使用更干净的$http,尽管您只需编写几行代码

# Session related methods
Session.create
Session.delete

# User related methods
User.create
User.get

希望这能让事情变得更清楚。

By REST会话由客户端而不是服务维护。您应该使用HTTPS并在每个请求中发送用户名和密码,例如使用HTTP基本身份验证头,而不是使用会话cookie


Ofc。在客户端,您可以进行登录和注销,这将更改通过AJAX发送的身份验证标头的内容。

为什么要在每个请求中发送身份验证标头,而不是将登录的用户保留在会话的服务器端?这样我就不需要每次都传递凭据,只需要在登录时传递。因为如果您的服务保持客户端状态,它将无法扩展。这就是为什么RESTful web服务在默认情况下是无状态的。顺便说一句,在您的情况下,您可能无法为数百万用户提供服务,因此我认为使用REST服务是不值得的。我可能需要几年的时间,至少1-2年的时间来学习如何正确地做这件事。。。