我不熟悉.Net& RESTful服务。
以下是我在数据库中的对象层次结构:Users-> Folders-> Notes。
API:GET / api / note / {noteid}
将被映射到存储库调用
NoteRepository :: GetNote(userId,noteId)
请注意,为了安全起见,我正在传递userId以确保该笔记属于登录用户。
这是正确的做法吗?意思是,每个存储库调用都会有第一个参数作为userId来检查被访问的对象是否属于用户。
有没有更好的方法?
答案 0 :(得分:2)
我还会在API中引入用户ID,因为Wikipedia REST article中描述了Stateless和Cacheable约束。
但是,如果我检查Google Tasks REST API,它们不包含用户ID,Twitter API也是如此,因此似乎不包含用户ID的趋势。如果有人能说清楚,我将不胜感激。
更新:想一想,如果noteid在所有用户中都是唯一的,则无需包含用户ID,因此GET / api / note / {noteid}就可以了。
然而,restful接口中的逻辑父级将是GET / api / note /以获取所有注释的列表,这里我有异议,因为列表会根据请求它的用户而有所不同,不可缓存。
至于你的网点部分,我认为在dot net方法中传递用户ID非常好。
答案 1 :(得分:2)
自
以来,您不需要用户IDGET /api/note/{noteid}
确实是独一无二的。
添加ID的有效方案是:
GET /api/{userId}/notes
然后,如果你想要一个特定的笔记,你可以:
GET /api/{userId}/notes/{noteId}
我会在入门级实现安全性。用户是否有权在该特定资源上执行方法。角色模型方法没问题。
问候。