我只有AngularJs client
。他希望使用 CRUD 架构来使用每个API。例如:
GET /user
GET /user/:id
POST /user
PUT /user/:id
DEL /user/:id
这是他想要用于我的架构的所有端点。(使用MongoDB数据库)。
我有用户架构,如(简化):
{
id : ObjectId("..."),
name: "Foo fooer",
itemIds : [
ObjectId("..."),
ObjectId("..."),
ObjectId("...")
]
}
和架构项目(不需要显示问题)。
我们需要从itemsId
添加/删除 user.itemIds
客户希望创建新架构 userItems :
{
id : ObjectId("..."),
userId : ObjectId("..."),
itemID : ObjectId("...")
}
他希望从用户架构中删除user.itemIds
并创建4个CRUD端点/ userItems。
我认为这是错误的方法,规范了mongo数据库。
但我不知道这两方面哪一个更好(客户和服务器)
1)创建2个端点POST /UserItem
,DEL /UserItem
以更新user.itemIds
中的项目。
2)使用现有API user.itemIds
更新PUT /user
,但客户端需要发送整个 itemsIds 数组来更新它(如果有很多这可能是不好的方法。
客户说这两种方法都很糟糕,他只知道他的SQL REST archictere(所有内容都已规范化)。我怎么能证明他,他错了?因为他对我说:
Server to adapt to the client and not vice versa.
谢谢。
答案 0 :(得分:0)
This是关于RESTful API的好文章。
简而言之,您的RESTful API应该:
例如:
POST users/:userId/items/
向用户添加新项目是好的。或者,DELETE users/:userId/items/:itemId
从用户中删除项目。GET /items/:itemId/users/
。