具有多个Update / Put操作的RESTful Web Api的最佳方法?

时间:2015-12-15 11:55:53

标签: c# rest asp.net-web-api2

在制作RESTful服务时,我发现自己对如何处理资源中的不同类型的更新感到困惑。使用MVC,我们可以使用不同的模型进行不同的操作,但是当我们转向Web API并尝试实现REST方法时,我将自己绑定到两个选项:PUT和POST。

这还不够。

如果我有一个非常庞大而复杂的资源,比如社交网站中的用户个人资料,其中包含许多属性和可能与其他资源的界限,那么只是尝试进行任何可能的更改都会通过相同的“PUT”进行为了工作,它将创建一个巨大的Spaghetti Updater Monster。

我发现了这个问题的不同解决方案:

  1. 使用重载(使用不同的模型作为参数)。仍然不好,因为这种类型的分叉会使维护和/或故障排除变得困难。

  2. 使用PATCH动词。虽然这仍然需要我多次重载它以进行每次更新,并且WEB API没有本机支持。

  3. 创建更多控制器:我个人以MVC / Command的方式使用了这种方法:我可以考虑“绑定”一个资源并创建一个控制器:FriendsController,FavouritesController,LikesController,MainPhotoController,ans so。 ..这是“用户特征/属性/可能与其他资源的界限”。它对我有用,使事情更简单,更顺畅。

  4. 看起来还有另一种类似的方式,但不是为一切创建控制器,而是创建“路径”,所以我可以拥有“UserController / favorites /”,“UserController / Likes”等等。

  5. 我知道在SW体系结构中,从来没有一种绝对正确的方式,这一切都取决于您的要求,但即便如此,仍然存在模式和最佳实践,其中哪一种看起来对您来说是最佳实践?或者这些看起来都不是一个好方法吗?

    非常感谢。

0 个答案:

没有答案