字段过滤

Hydrogen 所有的数据接口均支持指定输出/不输出某个字段。需注意,接口不支持指定输出,不输出的情况,即:?keys=-a,b

指定字段输出

使用方式

在 Query Parameters 中加入 keys,值为需要指定输出的字段,可同时指定多个字段,中间用 , 隔开,如 ?keys=id,created_at

使用例子

test_table 表拥有 4 个字段,分别为 id, created_at, nickname, gender

  1. curl -X GET \
  2. -H "X-Hydrogen-Client-ID: [[client_id]]" \
  3. -H "Authorization: Hydrogen-r1 {{AccessToken}}" \
  4. -H "Content-Type: application/json" \
  5. https://{{服务器域名}}/hserve/v2.4/table/test_table/record/?keys=id,created_at

返回示例

  1. {
  2. "meta": {
  3. "limit": 20,
  4. "next": null,
  5. "offset": 0,
  6. "previous": null,
  7. "total_count": 1
  8. },
  9. "objects": [
  10. {
  11. "id": 16,
  12. "created_at": 1514174425
  13. }
  14. ]
  15. }

指定字段不输出

使用方式

在 Query Parameters 中加入 keys,值为需要指定不输出的字段,字段需要加上前缀 -,可同时指定多个字段,中间用 , 隔开, 如 ?keys=-id,-created_at

使用例子

test_table 表拥有 4 个字段,分别为 id, created_at, nickname, gender

  1. curl -X GET \
  2. -H "X-Hydrogen-Client-ID: [[client_id]]" \
  3. -H "Authorization: Hydrogen-r1 {{AccessToken}}" \
  4. -H "Content-Type: application/json" \
  5. https://{{服务器域名}}/hserve/v2.4/table/test_table/record/?keys=-id,-created_at

返回示例

  1. {
  2. "meta": {
  3. "limit": 20,
  4. "next": null,
  5. "offset": 0,
  6. "previous": null,
  7. "total_count": 1
  8. },
  9. "objects": [
  10. {
  11. "nickname": "John Doe",
  12. "gender": "famale"
  13. }
  14. ]
  15. }

当提交 keys 不是 Table 的字段时,会报 400 的错误

字段扩展

开发者可以通过 expand pointer 来查询该字段的更多信息,返回结果中的 pointer 字段会被替换为这个字段对应的完整对象。

  • created_by 字段是一个特殊的 pointer,开发者无需配置,默认指向了 _userpofile 表
  • 使用 expand 方法会增加一次数据表查询,api call 计费 +1

使用方式

在 Query Parameters 中加入 expand,值为需要扩展的字段,可同时扩展多个字段,中间用 , 隔开

  • v2.4 以上版本字段扩展支持指定 pointer 展开后返回的字段,通过设置 expand=pointer1,pointer2&keys=pointer1.field1,pointer2.field2 的形式进行指定;注意,仅当 expand 中已指定展开对应的 pointer 字段后,keys 中指定的 pointer 展开后返回值才会生效,否则会被忽略

  • 通过 keys=pointer.field1,pointer.field2 指定返回字段,keys=-pointer.field1,-pointer.field2 指定不返回字段,两者不能同时使用,否则 keys 参数会被直接忽略

  • 展开后的返回值中默认会带上 _table 字段,表示该 pointer 字段指向的表名

使用例子

  1. curl -X GET \
  2. -H "X-Hydrogen-Client-ID: [[client_id]]" \
  3. -H "Authorization: Hydrogen-r1 {{AccessToken}}" \
  4. -H "Content-Type: application/json" \
  5. https://{{服务器域名}}/hserve/v2.4/table/test_table/record/?expand=created_by,pointer_value&keys=created_by.id,created_by.nickanme,pointer_value.name

返回示例

pointer_value 为指向其他表的 pointer 类型字段

未 expand 的情况下,created_by 的值是 int 类型,而其他 pointer 的值是 object

使用 expand

  1. {
  2. "created_at": 1516118400,
  3. "created_by": {
  4. "id": 62536607,
  5. "nickname": "Larry。"
  6. },
  7. "pointer_value": {
  8. "_table": "table-name",
  9. "name": "123",
  10. },
  11. "id": "5a2fa9b008443e59e0e67829",
  12. "name": "小米无线耳机",
  13. "price": 199
  14. }

不使用 expand

  1. {
  2. "created_at": 1516118400,
  3. "created_by": 1234,
  4. "id": "5a2fa9b008443e59e0e67829",
  5. "name": "小米无线耳机",
  6. "price": 199,
  7. "pointer_value": {
  8. "id": "5a2fa9xxxxxxxxxxxxxx",
  9. "_table": "table-name"
  10. }
  11. }