我正在考虑创建一个RESTful API来监视远程设备--为了便于讨论,假设远程设备是一个电压表。
API的一个重要功能是随时读取仪器测量的电压。
我的问题是:如果有的话,用于读取一个可以从一个读到下一个读的值的合适的HTTP动词是什么?
据我所知,GET是错误的,因为服务器可能假定值是幂等的,因此缓存返回的值。
但其他常用的选择-- PUT和POST --似乎用于创建和更新值,而不是返回值。
我可以想到几种方法:
什么是正确的方法?
发布于 2018-03-06 15:45:44
我的问题是:如果有的话,用于读取一个可以从一个读到下一个读的值的合适的HTTP动词是什么?
GET方法请求传输目标资源的当前选定表示形式。
缓存的语义在RFC 7234中描述;特别是,您可以使用高速缓存-控制头向中间组件提供它们正确缓存响应所需的元数据。如果您总是希望中间组件在重用值之前检查源文件,则缓存控制指令列表包括无缓存。
这是均匀界面的要点--因为资源统一地实现了一组一致的语义,客户机和中介可以依赖这些语义来贡献,而不需要知道资源的具体细节、它的实现或它的表示。
将REST体系结构风格与其他基于网络的风格区分开来的中心特性是它强调组件之间的统一接口(图5-6)。将通用性的软件工程原理应用到组件接口中,简化了系统的总体结构,提高了交互的可见性。实现与它们提供的服务分离,这鼓励了独立的可进化性。然而,权衡的是,统一的接口降低了效率,因为信息是以标准化的形式传输的,而不是特定于应用程序的需要。REST接口被设计成能够有效地进行大型超媒体数据传输,为Web的常见情况进行优化,但最终导致的接口对于其他形式的体系结构交互并不是最优的。
发布于 2018-03-06 11:18:29
当您只想从服务器获取一些数据时,请使用GET作为隐式含义。
正如您正确地说过的,您需要有正确的缓存机制(我是有意地这样说的,因为您可能只设置缓存最大值为0,但在以后的任何时候也可能需要缓存),以确保在响应中获得新的数据。
https://stackoverflow.com/questions/49125292
复制相似问题