我在Mongo DB for Users中有类似的结构。
{
"id": 112121
"name": "Strange",
"age": 27,
"type": "Manager"
"email" : "strage@gamil.com",
"items" : [
{
"id": "1001",
"name": "laptop",
"details": [
{
"attributeKey": "ManifaturedYear",
"attributeValue" : "2010"
},
{
"attributeKey": "EligibaleToDsipose",
"attributeValue" : "2018"
}
]
},
{
"id": "1002",
"name": "phone",
"details": [
{
"attributeKey": "ManifaturedYear",
"attributeValue" : "2010"
},
{
"attributeKey": "EligibaleToDsipose",
"attributeValue" : "2018"
}
]
}
]
}
我提供了一个宁静的URI来操纵这个资源。并且URLS如下
CREATE
POST api/users
POST api/users/{id}/items e.g. api/user/12121/items
POST api/users/{id}/items/{id}/details e.g. api/user/23223/items/222/details
更新| DELETE
[ PUT | DELETE ] api/users/{id}
[ PUT | DELETE ] api/users/{id}/items/{id}
[ PUT | DELETE ] api/users/{id}/items/{id}/details/{attributeKey}
我的问题是我如何支持获取请求
一个。 GET api / users / type / {type} / items例如GET api / users / type / Manager / items
B中。 GET api / users / {type} / items例如获取api / users / Manager / items#与id冲突
℃。获取api / users / items?type = Manager
一个。获取api/users/email/abc@gamil.com/items
B中。获取api/users/items?userEmail=abc@gmail.com
我可以采用任何好的参考来设计我的其余URI
答案 0 :(得分:1)
如果可能的话,我的建议是将项目分解为顶级资源。 /users/{id}
仍然拥有该用户拥有的项目集合。根据您的需要,您可能只在用户响应中将它们嵌入为链接而不是完整表示。 /items
将是所有项目的规范集合。那会给你这些资源:
/users
/users/{id}
/users/{id}/items
/items
如果你这样做,那么:
1:GET /items?ownerType=Manager
2:GET /items?ownerEmail=abc@example.com
(项目集合) - 或 - GET /users?email=abc@example.com
(一个用户的集合)
3:GET /items?ownerOlderThan=30