restFUL API:如何设计关系数据模式(面向JSON doc数据库)

时间:2016-05-24 20:17:11

标签: node.js api rest couchdb relational-database

我正在设计一个restFUL api:

  • couchDB as database
  • 服务器的nod​​eJS + expressJS
  • BackboneJS:富客户端应用

我有3个实体:

  • 用户:可以拥有多个团队
  • 团队:可以拥有多个用户和项目
  • 项目:最多可以拥有1个团队和多个用户(此用户是不在团队中但可以参与此项目的奖励用户)

这是我的实际数据库模式,它接近SQL连接语法,我不知道它是否是最好的方法...

用户

 {
   "_id": "233e91578810ee8462b33bd1",
   "type": "user",
   "email": "bill@gmail.com"
   "teams": [b6e9157886462b33bd1f2, a6e9157886462b33bd1f6],
}

团队

 {
   "_id": "b6e9157886462b33bd1f2",
   "type": "team",
   "users": ["233e91578810ee8462b33bd1", "b8a6462b33bd1fb0068ab"],
   "projects": ["456abe54a65b6a5aa5ea63cd", "a5eba546a6edc313avsb068"],
}

项目

 {
   "_id": "ba5c60ee8462b33bd1fb00684c",
   "type": "project",
   "team": "b6e9157886462b33bd1fb0068ab",
   "users": ["aae9157886462b33bd1fb0068a", "abac5d6c7d99a6c005c26"]
}

我对restFUL api缺乏经验,但是使用这种模式我必须以双向方式更新。

例如:在团队中添加了用户,我必须在团队实体中添加此userID,并且我必须在用户实体中添加teamID。

我也给你我的API路线:

GET api/user/:id -> return user data
PUT api/user/:id -> update user data

GET api/team/:id -> return team data
PUT api/team/:id -> update team data 

(我对最后一个问题有疑问,因为有不同的更新可能性, addUser,removeUser ,当调用GET ROUTE时,我必须知道哪种更新是为了以双向方式更新

1 个答案:

答案 0 :(得分:1)

您可以使用DELETE:

js/Topbar.js

它可以是RESTful而不必“删除”任何东西,例如它可以设置删除标志。

此外,任何GET路由都应该是幂等的,这意味着如果数据被访问一次或多次,它就无法操纵或损害数据。

至于做插入,通常你只想使用POST:

DELETE /api/team/:id -> remove team data

您可以使用PUT或PATCH进行更新,但我一直倾向于PUT,因为PATCH与某些版本的Internet Explorer不兼容。