稀疏字段

使用查询参数“fields”,我们能限制api返回的字段。这种做法有助于提升性能,因为客户端可以按需所取。同样,我们能在任何路由中(传统CRUD路由,或关系路由),以及任何返回数据的HTTP方法中使用fields参数。

注:

为了可读性,例子的url未进行编码。

稀疏字段的语法如下:

?fields[<resource_type>]=<list of fields to return>

例:

GET /persons?fields[person]=display_name HTTP/1.1
Accept: application/vnd.api+json

上述例子中,结果只会返回person的display_name字段,并不会返回关系数据。这样就可以达到提高性能的目的,因为查询外键是很费时的。

我们能管理整个响应返回的字段,甚至是include中的数据。

例:

如果我们不想得到某个人电脑的关系字段,我们可以做如下操作:

GET /persons/1?include=computers&fields[computer]=serial HTTP/1.1
Accept: application/vnd.api+json

当然我们也可以组合使用多个稀疏字段:

GET /persons/1?include=computers&fields[computer]=serial&fields[person]=name,computers HTTP/1.1
Accept: application/vnd.api+json

注:

如果我们同时使用了fields和include,别忘了在fields中注明关系的名称,否则include可能会失败。(可以观察上例中的computers,在两处都出现了)