雪鸮/magento2-idempotent-api

安装数: 144,515

依赖项: 0

建议者: 0

安全: 0

星标: 4

关注者: 5

分支: 2

开放问题: 2

类型:magento2-module

v2.0.2 2022-06-17 15:01 UTC

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

先决条件

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