Javascript Backbone.js restful json API设计
我的API中有以下功能,并且我反复回答了几个问题:Javascript Backbone.js restful json API设计,javascript,rest,backbone.js,Javascript,Rest,Backbone.js,我的API中有以下功能,并且我反复回答了几个问题: POST/user(需要全名、电子邮件、密码)将创建一个新用户,如果已创建该用户,将生成一个唯一的激活ID,并通过邮件将激活该帐户的链接发送给该用户 PUT/user(需要id、电子邮件)将激活该用户 一旦用户激活了自己的帐户,就可以登录了 POST/会话(需要电子邮件和密码)并登录用户 GET/session将查看cookie会话id,并在验证时返回用户信息 删除/会话将用户注销 一旦用户登录,他会被要求提交他们的兴趣(只是一个HTML文本区
var Session = Backbone.Model.extend({
url: '/session'
});
var session = new Session();
session.fetch(); // Get the user authentication of the backend server.
我的用户模型:
var User = Backbone.Model.extend({
url: '/user'
});
function signup(fullName, email, password){
var user = new User();
user.save({
fullName: fullName,
email: email,
password: password
});
};
function activate(id, activationId){
var user = new User();
user.save({
id: id,
activationId: activationId
});
};
// Possibility...?
function submitInterests(id, interests){
var user = new User(url: '/user/interests/');
user.save({
id: id,
activationid: activationId
});
}
感谢您的阅读。宁静世界的经验法则是: 动词向下,名词向上 这是因为魔法4[
GET、POST、PUT、DELETE
]应该足以执行所有操作:无/users/activate
//user/edit
当对整个/users
进行放置以进行激活时,似乎是合法的,向/root
发出所有请求并传递“entity=users,id=3,…”等等也是合法的
我建议您对集合使用/entityname
[在这里您可以发布
来创建一个新集合],然后使用/entityname/:id
来引用单个实体[在本例中,是单个用户]
现在,您可以在/users/123
上放置,以完成您需要的任何操作
当然,您可以嵌套资源:
/users/:id/interests
这是:id th
用户所有兴趣的路径-您可以在上面发出GET
来检索它们,或者发出POST
来向列表添加元素,发出PUT
来从头开始设置all列表
关于会话
资源的最后一个想法是:真正的RESTful服务应该是*无状态的,即它不应该依赖会话。必须对每个请求进行授权,请参见,尽管有时您可以参加会话
为了与您的模式保持一致,您可以定义一个/user/:id/sessions
资源,在该资源中,您可以POST
进行新的登录,以便跟踪用户访问情况。RESTful world中的经验法则是:
动词向下,名词向上
这是因为魔法4[GET、POST、PUT、DELETE
]应该足以执行所有操作:无/users/activate
//user/edit
当对整个/users
进行放置以进行激活时,似乎是合法的,向/root
发出所有请求并传递“entity=users,id=3,…”等等也是合法的
我建议您对集合使用/entityname
[在这里您可以发布
来创建一个新集合],然后使用/entityname/:id
来引用单个实体[在本例中,是单个用户]
现在,您可以在/users/123
上放置,以完成您需要的任何操作
当然,您可以嵌套资源:
/users/:id/interests
这是:id th
用户所有兴趣的路径-您可以在上面发出GET
来检索它们,或者发出POST
来向列表添加元素,发出PUT
来从头开始设置all列表
关于会话
资源的最后一个想法是:真正的RESTful服务应该是*无状态的,即它不应该依赖会话。必须对每个请求进行授权,请参见,尽管有时您可以参加会话
为了与您的模式保持一致,您可以定义一个/user/:id/sessions
资源,在这里您可以POST
进行新的登录,这样您就可以跟踪用户访问。如果它是无状态的,那么我就不知道如何在我的web应用程序中管理会话。还有,为什么不使用会话并打破rest模式呢?我使用redis作为会话存储,因此它是集中式的。会话提供了用户跟踪功能,并且在每次收到请求时不再查询我的数据库(auth)。如果它是无状态的,那么我就不知道如何在我的web应用程序中管理会话。还有,为什么不使用会话并打破rest模式呢?我使用redis作为会话存储,因此它是集中式的。会话提供了用户跟踪功能,并且在每次收到请求时不再查询我的数据库(auth)。