c# - 需要良好的实现来使用具有相同输出格式但不同属性的多个 API

标签 c# api rest architecture

我正在使用多个 RESTFul API,它们返回以下结构的数据:

{
"total": 4,
"offset": 0,
"limit": 50,
**"data"**: [
          {
            "record_date": "2015-06-19 14:20:08",
            "user_id": "kdave@abc.com",
            "notes": "testing",
            "id": 25,
            "type": 1002
          },....
        ]
}

data”属性随不同的 API 而变化。目前,我需要在不同的命名空间下创建不同的类“数据”以反序列化 API 输出。

对于以更好的架构方式处理这种情况有什么建议吗?

最佳答案

这对于 generics 来说是一个完美的问题:

public class RestResponse<TData>
{
    public int Total { get; set; }
    public int Offset { get; set; }
    public int Limit { get; set; }
    public TData[] Data { get; set; }
}

然后只需定义各种数据类即可。

编辑:

如果您想使用相同的反序列化代码,请考虑使用通用方法:

public RestResponse<T> DeserializeResponse<T>(...)
{
     var result = new RestResponse<T>();
     ...
     return result;
}

其他地方:

object result;
switch (...)
{
    case A:
        result = DeserializeResponse<ApiDataModelA>(...);
        break;
    ...
    default:
        throw new InvalidOperationException(...);
}

关于c# - 需要良好的实现来使用具有相同输出格式但不同属性的多个 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31127214/

相关文章:

c# - 使用 newtonsoft 从 Json 字符串中删除属性

c# - 我应该将 Entity Framework 视为非托管资源吗?

android - 在 Android 中完成视频后完成 YoutubeStandAlonePlayer?

java - Nuxeo 使用 REST 使用新版本创建和更新文件

java - SHA512客户端握手实现

asp.net - 为 ASP.Net 应用程序构建 Web 服务并集成 ESB?

c# - 使用 AssemblyInstaller 安装 Windows 服务时出现问题

c# - 处理 MS Word 文件中的文本的最简单方法

java - Java中如何轻松顺利地从MediaType.JSON的数据中获取数据?

angular - 类型 'todos' 上不存在属性 'Object'