Web services RESTWeb服务中的安全方法到底是什么?

Web services RESTWeb服务中的安全方法到底是什么?,web-services,rest,Web Services,Rest,我对REST非常陌生,我对REST中的安全方法和幂等方法有以下疑问 我知道(但可能是错误的)GET、HEAD、OPTIONS和TRACE方法被定义为安全的,因为它们只用于检索数据 但现在我在读这篇文章:它说: 安全方法是不修改资源的HTTP方法。对于 实例,在资源URL上使用GET或HEAD,不应更改 资源 在这之前,它是好的,它与我知道的没有什么不同,但在它断言: 然而,这并不完全正确。它的意思是:它不会改变 资源表示法。安全的方法仍然有可能做到这一点 更改服务器或资源上的内容,但这不应反映

我对REST非常陌生,我对REST中的安全方法和幂等方法有以下疑问

我知道(但可能是错误的)GET、HEAD、OPTIONS和TRACE方法被定义为安全的,因为它们只用于检索数据

但现在我在读这篇文章:它说:

安全方法是不修改资源的HTTP方法。对于 实例,在资源URL上使用GET或HEAD,不应更改 资源

在这之前,它是好的,它与我知道的没有什么不同,但在它断言:

然而,这并不完全正确。它的意思是:它不会改变 资源表示法。安全的方法仍然有可能做到这一点 更改服务器或资源上的内容,但这不应反映 以不同的表现形式

这一断言的确切含义是什么?代表性究竟是什么?什么意思是一个安全的方法会对资源进行更改,但这种更改不会反映到不同的表示中

然后它也会执行此示例:

GET /blog/1234/delete HTTP/1.1
如果这实际上会删除blogpost并断言:

安全方法是可以缓存、预取而不需要任何 对资源的影响

代表性究竟是什么

“表示”是从表示对象状态的服务器返回的数据。因此,如果你得到它,它应该返回小狗的“表示”(因为,它当然不能返回实际的小狗)

然而,这并不完全正确。它的意思是:它不会改变 资源表示法。安全的方法仍然有可能做到这一点 更改服务器或资源上的内容,但这不应反映在 一种不同的表现形式

这一断言的确切含义是什么

他们的意思是,如果您连续两次获得/server/puppy/1,它应该会给您相同的响应。但是,假设您有一个字段,其中包含每条小狗被查看的次数。该字段用于提供一个页面,列出观看率最高的10只小狗。该信息通过GET/server/puppystats提供。GET/server/puppy/1可以更新这些信息。但是它不应该更新关于小狗本身的信息。或者,如果它确实更新了关于小狗本身的信息,则该信息不是GET/server/puppy/1返回的小狗表示的一部分。它只是通过另一个URL可用的其他表示的一部分

<>如果它有帮助,这与C++应用于const对象时的“可变”关键字类似。“可变”允许您修改对象,但不应以类外可见的方式修改对象

代表性究竟是什么

“表示”是从表示对象状态的服务器返回的数据。因此,如果你得到它,它应该返回小狗的“表示”(因为,它当然不能返回实际的小狗)

然而,这并不完全正确。它的意思是:它不会改变 资源表示法。安全的方法仍然有可能做到这一点 更改服务器或资源上的内容,但这不应反映在 一种不同的表现形式

这一断言的确切含义是什么

他们的意思是,如果您连续两次获得/server/puppy/1,它应该会给您相同的响应。但是,假设您有一个字段,其中包含每条小狗被查看的次数。该字段用于提供一个页面,列出观看率最高的10只小狗。该信息通过GET/server/puppystats提供。GET/server/puppy/1可以更新这些信息。但是它不应该更新关于小狗本身的信息。或者,如果它确实更新了关于小狗本身的信息,则该信息不是GET/server/puppy/1返回的小狗表示的一部分。它只是通过另一个URL可用的其他表示的一部分


<>如果它有帮助,这与C++应用于const对象时的“可变”关键字类似。“可变”允许您修改对象,但不应以类外可见的方式修改对象。

因此,关于表示,我可以说JSON和XML返回的小狗对象状态日期(与id=1关联)是相同数据的两种不同表示形式?我不知道。我在想,不同的表示将是一组引用同一对象的不同字段。但是,也许改变编码也被认为是一种不同的表示法。所以关于表示法,我可以说JSON和XML返回的小狗对象状态日期(与id=1关联)是相同数据的两种不同表示法?我不知道。我在想,不同的表示将是一组引用同一对象的不同字段。但是,也许改变编码也被认为是一种不同的表示。