我目前正在设计一个使用 ASP.NET Web API 实现的 RESTful API。
非常重要的一点是向后兼容性。
我想让实际的 API 代码没有任何关于向后兼容性的想法,以确保干净和最新的设计。
我想通过有一层版本翻译器来解决这个问题。
这些翻译器中的每一个都知道如何将一个特定版本 (vPrevious) 的请求和响应转换为另一个特定版本 (vCurrent) 的请求和响应。
这些翻译器可以轻松堆叠,以确保与任意数量的旧版本向后兼容。
这些翻译器中的每一个都将负责做各种事情,比如为新属性设置默认值,甚至执行一系列不同的操作。
我考虑过实现一个DelegatingHandler
检查客户端想要使用的 API 的版本号,并据此知道要使用哪些翻译器。
但是,我看不到我将如何实际实施这一点。正如我所看到的,每个翻译器实际上都需要一个完整的 ASP.NET Web API,以及一个路由表和控制器。这实际上是可以接受的,但是翻译控制器如何将数据路由到链中的下一个?