0

我正在使用 ASP.NET WebAPI 构建一个 RESTful API,我需要支持不同的 API 版本。我知道基于 URL(api/v1/ 样式)或基于自定义 HTTP 标头实现控制器选择的方法。这样,对于不同的 API 版本,我将在不同的命名空间中拥有不同的控制器。不过,我还有另一个问题要考虑。如果我的模型在 v1 和 v2 之间发生变化怎么办?如何防止我的 v1 API 更改其序列化输出?我使用的是实体框架代码优先方法,因此模型更改很容易实现,但这可能会破坏我的 v1 API。确保每个 API 版本保持一致的最佳方法是什么?

4

1 回答 1

2

我看不出实体框架与它有什么关系。我希望你不是直接序列化你的 EF 模型,是吗?如果你这样做,那么你确实有问题。

您应该改用视图模型。然后,这些视图模型可以像您对控制器进行版本控制一样进行版本控制。对于不同版本的控制器,您将拥有不同的视图模型。

这样,您就可以完全控制通过网络进行序列化的内容。现在,您可以根据需要在内部更改您的 EF 模型。有一天,您甚至可能决定放弃 EF(因为它很糟糕,并且可能会有一个新的孩子)并用完全不同的东西替换它,这种变化根本不会反映在您的 Web API 和暴露于外部只是因为您正在公开视图模型。

于 2013-01-25T11:42:00.013 回答