c# - 防止 API 发生重大更改

标签 c# rest api asp.net-web-api

我们有基于 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/

相关文章:

javascript - 在谷歌标签管理器服务器端准备一个输入表作为 API 请求正文的一部分发送

postgresql - 使用 bitcoind RPC 和 API 填充 PostgreSQL 数据库

c# - C#显示未读邮件数量

c# - 如何使用单击处理程序和命令在 WPF MVVM 中打开另一个 View ? (我的解决方案合理吗?)

python - 禁用或限制/o/应用程序(django rest framework,oauth2)

java - 无法覆盖 JsonHttpResponseHandler 中的 onSuccess() 方法

python - 如何使用 Python 调用 Soap API

c# - 将 JSON 字符串添加到 C# 中的现有字符串

c# - Unity - 使用 RayCast 将对象定向到地形 (C#)

java - @RolesAllowed 无法通过 Jersey 解决