## 超文本驅動和資源發現
REST 服務的要求之一就是[超文本驅動](http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven),客戶端不再需要將某些接口的 URI 硬編碼在代碼中,唯一需要存儲的只是 API 的 HOST 地址,能夠非常有效的降低客戶端與服務端之間的耦合,服務端對 URI 的任何改動都不會影響到客戶端的穩定。
目前有幾種方案試圖實現這個效果:
* [JSON HAL](http://tools.ietf.org/html/draft-kelly-json-hal-07)?,示例可以參考?[JSON HAL 作者自己的介紹](http://stateless.co/hal_specification.html)
* [GitHub API 使用的方案](https://developer.github.com/v3/#hypermedia)?,應該是一種 JSON HAL 的變體
* [JSON API](http://jsonapi.org/)?,(這里有?[@迷渡](https://github.com/justjavac)?發起的?[中文版](http://jsonapi.org.cn/)?),另外一種類似 JSON HAL 的方案
* [Micro API](http://micro-api.org/)?,一種試圖與?[JSON-LD](http://json-ld.org/)?兼容的方案
目前所知的方案都實現了發現資源的功能,服務端同時需要實現?`OPTIONS`?方法,并在響應中攜帶`Allow`?頭來告知客戶端當前擁有的操作權限。