首页 > 编程语言 >程序实现--对外接口可不仅仅是“给大佬递餐”,前置工作还是要做滴

程序实现--对外接口可不仅仅是“给大佬递餐”,前置工作还是要做滴

时间:2023-10-15 18:34:27浏览次数:34  
标签:递餐 订单 程序实现 前置 校验 接口 -- 支付 服务

我们来看一个案例。

前端页面上,用户在订单详情页确认完信息后,点击“确认支付”,发起余额支付。

这里,我们做如下3项假定。

1)后台程序暴露的“支付”Rest接口名为 order/pay。

2)后台程序对于“支付”的处理逻辑,我们简化成下面的业务流程。

 

3)后台程序是微服务结构,包括提供RestAPI接口的springmvc服务和后面的订单服务、账户服务。

 

那么,下面两种实现,你选择哪一种?

 比较上面两种实现方式,第一种是在order/pay这个rest接口里先校验订单状态,通过后才调用订单服务的“支付订单”接口。 第二种是直接转发请求给订单服务的“支付订单”接口。

相比来说,第一种更靠谱一些。

Why?

看上去,虽然两种实现方式都能达到目的,第一种方式还多了一个前置的校验。为什么我建议采用第一种方式呢?

这是典型的程序业务处理的方式。——接收到请求入参后,先进行前置校验,如果校验失败直接终止返回,否则才走后面的业务处理流程。

有同学就说了,直接调用订单服务的“支付订单”接口,“支付订单”接口的实现里不是也有订单状态的前置校验吗?

从技术的角度来说,这是有区别的。“支付订单”作为一个业务处理接口,我们要做的控制会比较多,例如日志、耗时、幂等、锁等。因此,从这个角度来说,在需要支付订单的时候再调用,是不是更合理呢?

 

类似的案例,也包括,我们的mq消费者,在从队列里拿到消息后,先进行必要的判断和校验,然后再调用业务方法。而不是一上来就直接把参数丢给业务方法。

 

本文设计文稿自:https://www.processon.com/view/link/611e38c2e0b34d3511f7c479

 

标签:递餐,订单,程序实现,前置,校验,接口,--,支付,服务
From: https://www.cnblogs.com/buguge/p/17765857.html

相关文章

  • 12-异步FIFO
    1.异步FIFO的应用跨时钟域批量数据传输效率高2.异步FIFO结构FIFO深度-双端口RAM设计3.异步FIFO深度计算4.异步FIFO读写地址的编码5.异步FIFO读写时钟域的信号同步6.异步FIFO空满信号的产生......
  • 【gdb】打印ASCII和宽字符字符串
    打印ASCII和宽字符字符串1.例子:#include<stdio.h>#include<wchar.h>intmain(void){charstr1[]="abcd";wchar_tstr2[]=L"abcd";return0;}用gdb调试程序时,可以使用“x/s”命令打印ASCII字符串。以上面程序为例:[root@node0......
  • SSTI模版注入
    SSTI模版注入模板引擎​ 模板引擎是为了使用户界面与业务数据分离而产生的,他可以生成特定格式的文档,利用模版引擎来生成前端的html代码,模版引擎会提供一套生成html代码的程序,然后只需要获取用户的数据,然后放到渲染函数里,然后生产模版+用户数据的前端html页面,然后反馈给浏览器,呈......
  • 同花顺期货通使用python写指标demo1
    期货通支持python本来是个好事情。奈何同花顺公司做产品不讲究,未经测试就发布了,全是bug。API接口也不完善,取数据的接口不支持取【持仓量】!玩期货不提供持仓量接口,那就只能是个玩具,不具有实用价值。怎么说呢?还是希望同花顺期货通能把python功能搞完善。 ......
  • 软考4
    节点的度:节点下的分支数树的度:最大的节点的度 二叉树的特性在二叉树的第i层上最多有2i-1个节点(i>=1)深度为k的二叉树最多有2k-1个节点(k>=1)叶子节点数位n0,度为2的节点数为n2,则n0-1= n2有n个节点的完全二叉树,按层序编号(从第一层到第[log2n]+1层,每层从......
  • C++ 引用本质
    @TOC前言C++引用及其本质在C++中,引用是一项强大而灵活的特性,允许程序员通过引用访问和修改变量的值。本文将深入探讨C++引用的本质、用法、优势以及与指针的比较等方面。1.引用的基本概念引用是C++中的一个别名,用于标识已经存在的对象或值。引用通过在变量声明时使用&符号来创建,......
  • C++ 引用本质
    @TOC前言C++引用及其本质在C++中,引用是一项强大而灵活的特性,允许程序员通过引用访问和修改变量的值。本文将深入探讨C++引用的本质、用法、优势以及与指针的比较等方面。1.引用的基本概念引用是C++中的一个别名,用于标识已经存在的对象或值。引用通过在变量声明时使用&符号来创建,......
  • 10-15|sudo hwclock --systohc这个是什么,什么情况下会用到这个
    `sudohwclock--systohc`是一个命令,用于将系统时间同步到硬件时钟。下面详细解释一下这个命令:1.**`sudo`**:这个前缀表示以超级用户权限执行接下来的命令。因为更改硬件时钟通常需要管理员权限,所以通常需要使用`sudo`。2.**`hwclock`**:这是一个工具,用于访问和修改硬件时......
  • 力扣-120. 三角形最小路径和
    题目描述给定一个三角形triangle,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点在这里指的是下标与上一层结点下标相同或者等于上一层结点下标+1的两个结点。也就是说,如果正位于当前行的下标i,那么下一步可以移动到下一行的下标i或i+1。示例1:......
  • 无涯教程-NumPy - 数组操作
    NumPy包中提供了一些例程来处理ndarray 对象中的元素。它们可以分为以下类型-Changing维度Sr.No.Shape&Remark1reshape在不更改数据的情况下为数组赋予新的维度2flat数组上的一维迭代器3flatten返回折叠成一维的数组的副本4ravel返回一个连续的扁平数组Tr......