实现Idepotam的实现来自数学。将一个数字乘以零为a
IDEMPOTENTE操作。 5 − 0为零,但5â€0也为零。乘以
之后
没有数字为零,您可以继续无限期地将其乘以零并获得相同的结果:0。
idempotão是某些HTTP操作的重要属性在可以执行操作的情况下,重要的
安全方法:
请求的妈妈被视为“安全”,如果其定义的半模式本质上只是阅读,则不要求客户端,并且由于将母亲应用于目的地功能< /strong>。同样,不使用安全服务器上任何损坏,财产损失或不寻常负载的安全是合理的。
母亲安全的例子:
获取用于获取服务器上功能的信息。当客户提出GET请求时,他希望收到有关请求上诉的信息,但并不期望该请求会导致服务器上任何状态变更。此外,等待所有获取的使用是合理的
URL: https://api.exemplo.com/usuarios/123
Método: GET
Status de Resposta: 200 OK
Conteúdo JSON da Resposta:
{
"id": 123,
"nome": "João Silva",
"email": "joao.silva@exemplo.com",
"idade": 35,
"cidade": "Rio de Janeiro"
}
头部仅用于获得HTTP响应。例如:客户可以将头请求发送到图像资源以验证其大小,遏制类型和最后修改日期,而无需接收图像的图像内容。
HEAD /downloads/video1.mpeg HTTP/1.0
用于获取有关特定资源或服务器的通信选项的信息。它返回服务器支持的母亲,以及其他相关信息。例如:客户可以向API服务器休息发送选项选项,以找出允许哪些母亲用于特定功能,例如get,post,put或delete。
OPTIONS /download.php
其他母亲©All Idempotan:
删除,显然不是安全(安全方法),发送删除请求与未发送请求以删除删除的请求大不相同。但是整个删除具有另一个非常重要的属性:它是iDepotente。
排除上诉后,它消失了。上诉状态已永久改变。您可以发送另一个请求删除,并且可以获得错误404,但是上诉的状态与第一个请求完全一样。上诉仍然缺失。这是竞争。 两次发送请求对上诉状态具有相同的影响。假设您发送请求删除,并且您的连接达到了时间限制。您永远不会得到答案,因此您不知道删除是否通过。您可以再次发送此请求,并继续尝试找到答案。如果删除一次删除两次,将不会发生任何额外的事情。 HTTP删除每零的资源有效乘以。乘以1是一个安全的操作,就像HTTP GET必须安全一样。您可以整天乘以一个数字1,什么都不会改变。所有安全的操作也是智力。
URL: https://api.exemplo.com/usuarios/123
Método: DELETE
放置 - iDempotente,以及删除。如果您提交同一PUT请求10次,则结果与仅发送一次的情况相同。如果您知道新功能应该使用的URL,则客户也可以使用PUT来创建新功能。
URL: https://api.example.com/usuarios/123
Método: PUT
Conteúdo JSON da solicitação:
{
"nome": "John Doe",
"email": "johndoe@example.com",
"idade": 30
}
请注意,即使您使用它来创建新功能,put也是一种智力操作。如果发送此请求五次,则不会创建五个带有相同文本的帖子(就像五个帖子请求一样)。
作为保险定义,IDEMPOTENT属性仅适用于用户要求的内容。服务器可以单独注册,保留修订控制历史记录或实现其他副作用,并不能对每个身份请求进行介绍。母亲©所有IDEMTOTENT都有区分,因为如果客户能够读取服务器响应之前,请自动重复请求。
。为了确保API操作是想法,重要的是要适当地投影资源和端点,例如使用资源标识符(例如IDS和交易管理)适当且适当的提交。这有助于确保可以在不引起不必要的问题的情况下进行操作,例如创建重复的资源或数据不一致。
至于母亲©每个帖子和补丁?
母亲©每个帖子都是Idempotent ,因为每个呼叫都会用标识符创建一个新功能。如果客户提交了具有相同数据的Varios请求,则在服务器上创建了不同的资源。
母亲©每个帖子都是安全的,,因为它在服务器上创建了一个新功能。此资源的创建可以具有副作用,例如发送通知,触发业务流程,在服务器上注册信息等。
母亲©All Patch用于在现有功能中进行部分更新。该补丁只允许应用特定的更改,而不是完全替换功能。但是,整个补丁不是想法或安全。
URL: https://api.exemplo.com/usuarios/123
Método: PATCH
Conteúdo JSON da solicitação:
{
"idade": 25
}
在此示例中,该补丁用于为现有用户添加“年龄”字段。如果已经存在“年龄”字段,则呼叫补丁将为字段添加新值。每个随后的补丁调用带有相同的JSON的呼叫将导致功能的“年龄”字段进行其他更改。
全理想的母亲是重复执行同一操作的母亲对服务器的影响不同。每次对运动的额外调用都不是智力可以导致不同状态变化或不同的副作用。因此,相同的请求发送了不同的时间可能会导致不同的结果。
整个安全性是可能导致服务器状态变化或具有不必要的副作用的安全性。只要保险仅在阅读并且不应引起更改,母亲就不安全地更改服务器状态或执行影响环境的操作。
因此,所有的想法而不是安全的,例如帖子和补丁,都会对每个呼叫产生不同的影响,并可能导致服务器状态或不良副作用的变化。
马 | idempotãncia | mãtodoseguro th> |
---|---|---|
get | sim | sim |
头 | sim | sim |
put | sim | nâo |
delete | sim | nâo |
post | nâo | nâo |
补丁 | nâo | nâo |
docminutaanaã50ana2.新闻)£32.2 / / / /pã0000
RFC ft-ietf-httpbis-p2-semantics: Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content
书:
Amundsen,Mike Richardson,Leonard Ruby,Sam-宁静的Web Apis -O'Reilly Media(2015)