在GraphQL中查询服务器提供的字段的更好方法

时间:2018-03-07 13:38:02

标签: graphql

我正在考虑将API从标准HTTP端点移动到GraphQL。 在客户端上,我们有数据表,用户可以在其中选择要显示的列。 用户可以在下次打开应用程序时保存其列布局。

问题是第一次显示这样的表时,客户端需要两件事:

  • 用户保存了哪些列
  • 每条记录的这些列的数据

目前我们有一个端点以JSON格式返回这两个端点。

网址:/contacts/table

{
    "columns": ["a", "b", "c"],
    "rows": [
        { 
            "a": 0, 
            "b": 1,
            "c": 2 
        }
    ]
}

有没有一种很好的方法可以让上述工作在GraphQL API中工作?

我尝试过的一些事情:

  • 拥有返回键值对的API

    "columns": ["a", "b", "c"]
    "rows": [
        [
            {
                "key": "a"
                "value": 0
            },
            {
                "key": "b"
                "value": 1
            }
        ]
    ]
    

    这种方法存在问题:

    1. 它有很多开销
    2. 感觉就像重新发明轮子,因为JSON已经是基于键/值的。
    3. 当需要以非表格方式访问相同类型时,与apollo等缓存框架不兼容
  • 自定义语法

    query {
      tables {
        contacts {
         columns @provideFragment("ContactColumns")
        } 
      }
    
      contacts {
        ..ContactsColumns
      }
    }
    

    这种方法存在问题:

    1. 这不是标准(据我所知),所以它可能不适用于其他工具。

0 个答案:

没有答案