我目前正在尝试使用 ASP.NET Web API、EF5 Code First 方法创建一个 REST'ish Web 服务后端。现在寻找一些建议来避免可能最知名的新手错误。
什么是为多对多场景建模控制器结构的最佳方法,如下所示。
假设我们有带有相关标签的博客文章。一篇博文可以有很多标签,一个标签可以分配给很多博文。博客文章和标签均属于客户。我会说很标准。但我首先关心的是如何通过以下(标准?)端点设计来更新博客文章。
GET - /api/posts/{id} => Load the post by id
DELETE - /api/posts/{id} => Delete the post by id
POST - /api/posts/ => Create a new post from the JSON in the body
PUT - /api/posts/{id} => Update the post from the JSON in the body. Tags as well
1.) 将标签简单地发布在数组中[{"name":"tag1"}, {"name":"tag2"}]
并让服务器找出标签是新的还是客户已经存在的标签是一种好习惯,只需将它们分配给创建博客文章。
分两步(首先创建帖子,然后创建/分配任务)在断开连接的网络世界中感觉不对。
2.) 更新过程大致相同。只 PUT 整个对象并让服务器尝试自己进行更新会是一种好习惯吗?
目前我已经用上面提到的工具链实现了这个“基本”场景。但是解决方案已经感觉相当复杂。尤其是手动摆弄和设置多对多关联会使事情变得比我想象的要复杂。
现在谈到并发处理时,我真的不相信在断开连接的情况下所有这一切都很容易处理,因为一切都来自客户端并且服务器需要找出所有内容。
那么从 API 的角度来看,这个(简单的?)场景的“正确”实现是什么?拆分实体创建/更新可能更容易吗?但是后来我会问自己如何绑定不同的请求,以便服务器现在可以将 2 个或更多请求属于 1 个创建/更新。
希望有人能读到这一点,并能追随我的胡思乱想。