Idempotencia de la interfaz de Java

Como programador de back-end, hago mi trabajo diario de interfaz de back-end. De hecho, trabajo con la mayoría de los programadores de back-end como CRUD en su trabajo diario. Los más utilizados son un controlador, un servicio y una clase de implementación implícita. Hasta hace poco, me preguntaban si la interfaz que usted hace es idempotente. Al principio fue un poco confuso, y luego fui a comprobarlo, resolví las ideas y me convertí en un ensayo.

Definición de idempotencia: para el sistema empresarial de back-end, si una o más solicitudes externas para la misma operación pueden devolver el mismo resultado, entonces mi interfaz es idempotente.

 

En el desarrollo real, puede usar diferentes métodos para hacer la idempotencia de la interfaz de acuerdo con diferentes escenarios.

Escenario: por ejemplo, en un escenario de pago, el usuario confirma el pedido y hace clic en el pago para realizar el pago. El front-end puede iniciar dos solicitudes de pago en el back-end debido a errores administrativos o razones de red. Si la interfaz no tiene garantía de idempotencia, el usuario Pagará dos veces, lo que obviamente no es razonable. En este caso, tenemos múltiples formas de garantizar la idempotencia de la interfaz.

Escenario 1: nuestro procesamiento generalmente consiste en agregar un estado de pago al pedido. El estado de pago de este pedido se consultará antes del pago. Si el pedido se ha pagado en una solicitud anterior, no es necesario que iniciemos el pago de la solicitud posterior. , Simplemente devuelva el pago exitoso del usuario, por lo que se puede decir que esta interfaz está garantizada por idempotencia.

Copia 2: cuando diseñamos la tabla, hay una tabla para registrar el registro de pago del usuario, uno de los campos en este registro de pago es el ID de pedido, podemos establecer este ID de pedido como un índice único, si el usuario es el mismo El pedido inicia el pago múltiple, por lo que se violará la restricción de índice única al insertar esta tabla. En este momento, también podemos devolver directamente el pago exitoso del usuario sin realmente hacer un segundo pago.

Escenario 3: utilice una ID única global, por ejemplo, podemos generar una ID única a partir de la ID del usuario y la ID de la orden y el tipo de operación en la orden, luego la misma ID de la operación de pago del mismo usuario para una orden debe ser la misma , Consultamos este ID único cada vez que llega una solicitud. Si existe, el pedido ya se ha pagado y podemos devolverlo directamente al usuario sin tener que volver a pagar.

 

De hecho, en nuestro desarrollo diario, aunque no existe necesariamente el concepto de idempotencia de la interfaz, inconscientemente haremos ciertas garantías para la idempotencia de la interfaz durante el diseño y desarrollo de la interfaz. Este ensayo es solo Profundizar en el concepto de idempotencia de la interfaz para prestar más atención al rendimiento de la interfaz y la usabilidad de la interfaz en el desarrollo futuro de la interfaz. Escribir código de manera más eficiente y feliz

 

Supongo que te gusta

Origin www.cnblogs.com/atinalove/p/12674023.html
Recomendado
Clasificación