# 稀疏字段 使用查询参数“fields”,我们能限制api返回的字段。这种做法有助于提升性能,因为客户端可以按需所取。同样,我们能在任何路由中(传统CRUD路由,或关系路由),以及任何返回数据的HTTP方法中使用fields参数。 > 注: > > 为了可读性,例子的url未进行编码。 稀疏字段的语法如下: ``` ?fields[]= ``` 例: ```http GET /persons?fields[person]=display_name HTTP/1.1 Accept: application/vnd.api+json ``` 上述例子中,结果只会返回person的display_name字段,并不会返回关系数据。这样就可以达到提高性能的目的,因为查询外键是很费时的。 我们能管理整个响应返回的字段,甚至是include中的数据。 例: 如果我们不想得到某个人电脑的关系字段,我们可以做如下操作: ```http GET /persons/1?include=computers&fields[computer]=serial HTTP/1.1 Accept: application/vnd.api+json ``` 当然我们也可以组合使用多个稀疏字段: ```http 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,在两处都出现了)