雪鸮 / magento2-idempotent-api
Requires
- php: ^7.4||^8.1
- magento/framework: ^103
- snowio/magento2-lock: ^1
Requires (Dev)
- rector/rector: ^0.8.56
This package is auto-updated.
Last update: 2024-09-17 19:29:32 UTC
README
描述
确保所有API操作都是幂等的模块。
幂等性:从RESTful服务的角度来看,一个操作(或服务调用)要成为幂等的,客户端可以重复执行相同的调用,而得到相同的结果。换句话说,多次执行相同的请求会产生与执行一次请求相同的效果。请注意,虽然幂等操作在服务器上产生相同的结果(无副作用),但响应本身可能不同(例如,资源的状态可能在请求之间发生变化)。
--RestApiTutorial.com http://www.restapitutorial.com/lessons/idempotency.html
先决条件
- PHP 7.4或更高版本
- Composer (https://getcomposer.org.cn/download/)。
magento/framework
103或更高版本snowio/magento2-lock
版本1或更高。
Magento版本
<= 2.3.x
使用1.x标签>= 2.4.x
使用master
安装
composer require snowio/magento2-idempotent-api
php bin/magento setup:upgrade
php bin/magento module:enable SnowIO_IdempotentAPI
php bin/magento setup:di:compile
php bin/magento cache:flush
使用
请求头
X-Message-Group-ID
请求头字段X-Message-Group-ID
指定请求的消息组。如果没有指定X-Message-Group-ID
,则请求不会被视为幂等的。
X-Message-Timestamp
请求头字段X-Message-Timestamp
对应于消息创建的时间。如果没有指定此字段,则此插件使用\time()
作为消息时间戳,请注意这是一个Unix时间戳
。
错误响应代码
409冲突
当两个或更多具有相同X-Message-Group-ID
的请求同时处理时,此错误发生,其中一个请求将导致409 CONFLICT错误响应。幂等API应确保资源不会被同时更新。
412预处理失败
当接收到一个延迟消息时,此错误发生。消息A是一个延迟消息,如果消息B(具有相同的X-Message-Group-ID
)是在源客户端创建后于消息A(具有比消息A更大的X-Message-Timestamp
)并且先于消息A接收到的,那么消息A将尝试更新资源但会失败,因为消息B比消息A更新。这确保了延迟消息不会影响资源的状态。
许可
此软件根据MIT许可证授权。查看许可证 https://github.com/snowio/magento2-idempotent-api/blob/HEAD/LICENSE