首先:这完全是出于学习目的,我知道我可以以任何我喜欢的方式设计我的API,而且我不必遵循REST架构100%。好的,等等问题:
我有一个(私有)REST(ish?)API,我正在使用角度应用程序。 API现在有这些端点:
会话:
GET /api/session //Getting the user's session information after a page refresh
DEL /api/session //Logging out
用户
GET /api/user/:id
POST /api/user
DEL /api/user/:id
PUT /api/user/:id
POST /api/user/:id/friendrequest //"Creating" a friendrequest to a user
POST /api/user/:id/groupinvite //"Creating" a groupinvite to a user
组:
GET /api/group/:id
POST /api/group
DELETE /api/group/:id
PUT /api/group/:id
DELETE /api/group/:id/users/:user //Deleting a user from a group
GET /api/group/:id/users //Get all users in a group
POST /api/group/:id/joinrequest //"Create" a request to join a group
现在我有几个问题:
我认为这里的所有内容都应该是RESTful,除了我不确定的两件事:
端点只能处理一个HTTP动词吗?例如 / api / user /:id / friendrequest只处理POST,因为它不应该 可以编辑,删除或获取所有的好友请求。
/ api / session不会在网址中包含任何参数,因为它 始终返回登录用户的会话。我知道这打破了 / resource /:id pattern,但我看不到任何其他方法来组织它 哪个是必需的。
另外,正如您所看到的,其中一些资源是嵌套的,而角度资源处理嵌套资源的方式真的丑陋(或者我做错了什么?)。是否有任何理由不使用$ http编写我自己的服务,而不是花费更多的时间和代码?我宁愿不使用像RESTangular这样的第三方模块。