回顾我对 REST(代表性状态传输)的了解,有一些“安全”的 HTTP 方法,例如 GET 请求,它不应该在服务器上调用更改。
那里有很多很棒的 RESTful API,我注意到其中很多会限制您在一段时间内可以发出的请求数量。由于跟踪请求需要在服务器上进行更改,因此在技术上监控 GET 请求不会破坏 REST 吗?
还是有一种完全 RESTful 的方式来跟踪 GET 请求?
回顾我对 REST(代表性状态传输)的了解,有一些“安全”的 HTTP 方法,例如 GET 请求,它不应该在服务器上调用更改。
那里有很多很棒的 RESTful API,我注意到其中很多会限制您在一段时间内可以发出的请求数量。由于跟踪请求需要在服务器上进行更改,因此在技术上监控 GET 请求不会破坏 REST 吗?
还是有一种完全 RESTful 的方式来跟踪 GET 请求?
来自维基百科
某些方法(例如,HEAD、GET、OPTIONS 和 TRACE)被定义为安全的,这意味着它们仅用于信息检索,不应更改服务器的状态。换句话说,它们不应该有副作用,除了相对无害的影响,如日志记录、缓存、横幅广告的服务或增加网络计数器。因此,在不考虑应用程序状态上下文的情况下发出任意 GET 请求应该被认为是安全的。
对于 REST 请求也是如此。
监控使用情况通常是与应用程序层不同的层。所以 REST API 是一回事,而使用跟踪是另一回事。
此外,虽然 REST 是一种架构风格,但我们不应该为了遵守它而扭曲现实。我们有时可以忽略“破坏”架构的事情,但我们应该在考虑后果之后才这样做。对建筑狂热不是一个好习惯……
如果您从客户端的角度考虑 HTTP 方法的语义,那么更容易理解“安全”语义的目的。从客户端的角度来看,它发出的请求没有任何意图改变服务器上的任何状态。如果服务器因此选择进行状态更改,那么这是服务器的选择,不能认为客户端对这些更改负责。