我们有基于 ASP.NET WebApi 的 REST-API。我们还分发 bia nuget .net 客户端库来与我们的 API 进行通信。
WebApi Controller 和客户端库共享客户端模型。 如果我向模型添加一些新的可选字段 - 没关系,但是当在某些新版本中我们不小心在 API 上添加新的枚举值时,以前版本的客户端如果收到新的枚举值将抛出异常。
那么,有没有办法检查 API 和客户端的向后兼容性并防止重大更改?
最佳答案
在这种特殊情况下:不要
在客户端库中使用枚举。每当你需要扩展这个枚举时,这种情况就会发生。我想您不想为每个此类更改创建新版本的 API。在您的客户端内,您应该接受字符串值,然后尝试解析它。如果已解析 - 好的,如果未解析 - 设置 YourEnum.None
。
一般来说:为了防止重大更改,您应该创建集成测试并在 CI 服务器上运行它们。如果您在 api 中添加新规则 - 现有集成测试不应失败。同时也没有100%的保证。这取决于您在编写集成测试时的细致程度。实际上与单元测试相同。
关于c# - 防止 API 发生重大更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58093408/