假设我有三种实体 - 用户,帖子,评论。 每个帖子都有一个父用户,每个评论都有一个父帖子,即 用户>后>评论
我的API如下所示:
这里的键是实体的webafe密钥
GET / user / {key} - 获取用户信息
POST / user / {key} / post / - 创建帖子
获取/发布/ {key} - 获取帖子
POST / post / {key} / comment / - 创建评论
GET / comment / {key}
问题:
答案 0 :(得分:0)
这是一个很好的,宁静的API设计(虽然流行的惯例是复数集合 - /users/{key}
,/posts/{key}/comments
等。)
您应该明确处理授权检查。 GET /users/{key}
的实现应该检查调用者是否有权查看该对象并返回HTTP 401或403.大概是调用者是由某种身份验证头确定的。
您可能正在考虑使用GET /myuser
或GET /myposts
等替代方案。有时这可能很有用,但如果可能的话,最好避免这种情况 - 它违反了REST的精神和GET的缓存能力。此外,最好使URL不仅适用于特定用户,还允许任何超级用户代表用户执行相同的操作。这些URL需要处理显式对象。
回复:多租户。我强烈建议避免它。我不认为它特别有用,如果你是GAE的新手,那将特别令人困惑。只需为您需要的数据建模 - 如果帖子与用户相关联,则将该信息存储在帖子中并使用它来执行授权检查或过滤。