在我看到的用于实现{
"_id" : ObjectId("57b3aa2db630347c1f9308b4"),
"updated" : ISODate("2016-08-30T05:05:18.301Z"),
"created" : ISODate("2016-08-17T00:05:01.354Z"),
"createdTimeStamp" : 1471392301,
"likes" : [],
"comments" : [
{
"created" : 1471935213,
"user" : ObjectId("57b33c810a56a0a81a9b50b7"),
"text" : "next party",
"_id" : ObjectId("57bbf2edee7a923c156c2f08")
},
{
"created" : 1471935612,
"user" : ObjectId("57b33c810a56a0a81a9b50b7"),
"text" : "its new party ",
"_id" : ObjectId("57bbf47cddd701302ba14fca")
},
{
"created" : 1471935717,
"user" : ObjectId("57b33c810a56a0a81a9b50b7"),
"text" : "its new again",
"_id" : ObjectId("57bbf4e5f934024c275f4f08")
},
],
"total_comments" : 3,
"consumer_id" : ObjectId("57b33c810a56a0a81a9b50b7") // Original User that receive notification
}
方法的所有 ASP.NET WebAPI 示例中,记录的密钥作为单独的参数传递给模型更新。例如:
HTTP PUT
我很好奇为什么使用这种方法而不是定义模型上的键值并简化调用?
[HttpPut]
public HttpResponseMessage Put(int id, UserEditViewModel model)
{
// Look up existing record
User user = await db.Users.FindAsync(id);
// Apply changes
// user.Name = model.Name;
// Commit updated record to data store
db.SaveChanges();
}
在大多数情况下,我认为View无论如何都需要public HttpResponseMessage Put(UserEditViewModel model)
{
// Look up existing record
User user = await db.Users.FindAsync(model.UserId);
// Apply changes
// user.Name = model.Name;
// Commit updated record to data store
db.SaveChanges();
}
,所以我不知道如何/为什么它会从View的角度来复杂化模型,但是我我相信一定有充分的理由。
答案 0 :(得分:1)
根据我们所讨论的RESTful的级别,我认为它可能更多是关于便利性。查看How do I capture all of my compiler's output to a file?,工作流程可能是这样的:
GET /api/users/{id}
一旦客户端导航到用户,服务器将构建链接uri,用唯一的资源标识符填充它,所以它看起来像这样:
"api:user-edit": {
"href": "http://apiname:port/api/user/{id}"
},
所以客户端必须要做一个
PUT /api/users/{id}
使用适当的有效负载(理论上应该是完整的资源,但通常服务器只选择查看几个字段 - 几乎像PATCH
)。