在.NET Core中使用RestSharp检测API空响应{}的方法
检测RestSharp API调用中的空响应{}逻辑实现
在.NET Core使用RestSharp调用API时,若接口偶尔返回空对象{}、正常时返回EmployeeDetails结构数据,可通过以下方式添加空响应检测逻辑:
原代码基础上的改造方案
直接检查响应的原始内容是否为{}是最准确的方式——因为RestSharp在反序列化{}时,会生成一个所有属性为默认值的EmployeeDetails实例而非null,无法通过response.Data == null判断空响应。
改造后的代码示例:
var request = new RestRequest("endpoint", Method.Get); request.AddHeader("Content-Type", "application/json"); var response = client.Execute<EmployeeDetails>(request); // 先处理请求失败的情况 if (!response.IsSuccessful) { // 可根据业务需求处理,比如抛出异常、记录日志或返回错误提示 throw new HttpRequestException($"API请求失败,状态码:{response.StatusCode}"); } // 检测空响应 var isEmptyResponse = string.IsNullOrWhiteSpace(response.Content) || response.Content.Trim() == "{}"; if (isEmptyResponse) { // 处理空响应场景,比如返回null、提示无数据等 Console.WriteLine("API返回空响应"); EmployeeDetails result = null; } else { // 使用反序列化后的有效数据 EmployeeDetails employee = response.Data; // 后续业务逻辑处理 }
补充说明
如果不想依赖原始响应内容,也可以校验response.Data的属性是否全为默认值,但这种方式存在风险——比如某些属性的默认值(如int类型的Id=0)可能恰好是有效数据,因此优先推荐检查原始响应内容的方案。
内容的提问来源于stack exchange,提问作者rabner casandra
相关产品推荐
相关产品推荐

