Javascript AngularJS和REST资源
因此,在名为“authService”的angular js应用程序中,我有以下资源: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
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年的时间来学习如何正确地做这件事。。。