【发布时间】:2021-09-01 07:48:20
【问题描述】:
我正在开发一个使用 .NET Framework 制作的 WEB API 应用程序。现在,我正在与一家供应商合作,帮助他们将他们的 WEB API 与我们的系统集成。他们的最新更改之一破坏了我的代码。由于我使用的是 RestSharp 库,因此我希望响应始终对应于特定类型的对象,独立于他们一方的成功或失败。
IRestResponse<T> response = await restClient.ExecuteAsync<T>(request);
如果响应成功,他们将发送这样的 json 响应
{message:"", jobNr:"2312312", status:"1"}
然后他们更改了代码,如果任何请求输入错误,他们将发送错误列表,因此响应将是这样的:
[{code:100, message:"contact phone is wrong"},{code:101, message:"the email is not provided"}]
我不喜欢这种方法,因为我认为他们应该对这样的错误做出回应:
{errorMessages:[{code:100, message:"contact phone is wrong"},{code:101, message:"the email is not provided"}]}
但因为它不在我手中。我应该如何处理?只需解析 json 响应并分配给不同类型的对象?谢谢。
【问题讨论】:
-
首先不要使用 RestSharp 出于这个确切原因,使用 HttpClient 可以更精细地控制读取状态代码和反序列化,您还可以在 DTO 中包含错误/错误数组,序列化程序不会非常关心...但是,狂野的西部并不止于此,我已经看到了 api 资源在相同状态代码上返回许多不同模式的示例(无类型语言有很多要回答的问题,*看着你 javascript*) ...但是,总而言之,不要使用 RestSharp 开始,它已经过了使用日期
-
响应的状态码是否会因错误而改变? (就像从 200 变成 400)
-
@A.Mokhtari 是的,他们发送状态码 400。
-
@TheGeneral 你可能是对的,RestSharp 似乎是一个不错的库,但实际上我敢打赌,有很多更好的库,比如 HttpClient。但是返回不同模式的 API 对我来说似乎是错误的。无论如何,在这种情况下,我设法说服他们将架构应用于我在帖子中遇到的错误。
标签: c# .net asp.net-web-api restsharp webapi