【发布时间】:2016-11-13 11:26:44
【问题描述】:
最近在设计一个RESTful API,想用Link这个头域来实现HATEOAS。
这一切都很好,没有任何实际问题,但我想让 API 的客户更容易。
例如,Link 标头可能如下所示:
Link: <https://api.domain.com/orders/{id}>; rel="https://docs.domain.com/order"
在这种情况下,客户端必须通过搜索 rel 属性中的 https://docs.domain.com/order 值来找到链接。
这可行,但由于文档的 URI 可能会更改,因此它很脆弱,并且由于长度的原因,它使其作为搜索键有点不切实际。
所以我想尝试使用 CURIE 来代替:
Link: <https://api.domain.com/orders/{id}>; rel="[rc:order]"
这样,URI 更改的问题在很大程度上得到缓解,而且更加紧凑,允许客户端更轻松地进行搜索。
我的问题是,由于我使用 Link 标头字段来实现 HATEOAS,我觉得将 CURIE 作为 HTTP 标头字段也包含在内是最一致的,而不是在响应正文中引入元数据。
由于整个 API 对所有元数据(分页、版本控制等)使用标准 HTTP 标头字段和状态代码,我宁愿不将元数据引入响应正文来定义 CURIE。
但是如果我使用 HTTP 标头字段,我应该将哪个字段用于 CURIE?
是否有标准的方法来处理 HTTP 标头字段?
如果没有,我是否应该只使用自定义标题字段,例如 X-Curie: <https://docs.domain.com>; name="rc",然后将其记录在某个地方供客户使用?
我环顾四周,大多数资源都参考 XML 或 HAL 标准,因此任何与 HTTP 标头字段相关的信息都将不胜感激。
【问题讨论】:
标签: rest http http-headers api-design hateoas