API项目5:申请签名 在线调用接口
开发申请签名
现在用户已经能看到这个接口了,也能看到这个接口文档,接下来就要在线调用
现在我们可以给每个新注册的用户自动分配一个签名和密钥,去修改一下注册流程:
backend 项目,找到 UserServiceImpl.java 中的 userRegister
①在插入数据前增加分配 ak、sk,把插入数据变成第四步

②找到 User.java,补充 ak、sk

③在 UserMapper.xml 也添加上 ak、sk
回到 UserServiceImpl.java 中的 userRegister, 把得到的值设置给用户
重启后端项目,访问 http://localhost:8101/api/doc.html 然后注册

去数据库里看一下

注册时自动分配 ak、sk 就搞定了
创建真实数据
用户也有签名了,就可以在线来调用这个接口,回到前端页面创建一个真实一点的数据

别忘了添加请求参数

接下来要实际地让后端去调用这个接口
调用流程

为了更规范、更安全,以及方便进行统计,建议使用后端调用的方式。这种方式更加规范和安全,还可以隐藏接口地址。如果直接将模拟接口完全开放给用户,那么后续的网关和计费等工作可能会徒劳无功。
前端要做的事情,就是把所有它要调用的接口 id 、请求参数传给后端,后端负责调用。
总结
- 前端将用户输入的请求参数和要测试的接口 id 发给平台后端
- (在调用前可以做一些校验)
- 平台后端去调用模拟接口
后端开发在线调用
开发测试接口
InterfaceController
/*** 测试调用** @param interfaceInfoInvokeRequest* @param request* @return*/
@PostMapping("/invoke")
public BaseResponse<Object> invokeInterfaceInfo(@RequestBody InterfaceInfoInvokeRequest interfaceInfoInvokeRequest,HttpServletRequest request) {if (interfaceInfoInvokeRequest == null || interfaceInfoInvokeRequest.getId() <= 0) {throw new BusinessException(ErrorCode.PARAMS_ERROR);}long id = interfaceInfoInvokeRequest.getId();String userRequestParams = interfaceInfoInvokeRequest.getUserRequestParams();InterfaceInfo oldInterfaceInfo = interfaceInfoService.getById(id);if (oldInterfaceInfo == null) {throw new BusinessException(ErrorCode.NOT_FOUND_ERROR);}if (oldInterfaceInfo.getStatus() == InterfaceInfoStatusEnum.OFFLINE.getValue()) {throw new BusinessException(ErrorCode.PARAMS_ERROR, "接口已关闭");}// 获取当前登录用户的ak和sk,这样相当于用户自己的这个身份去调用,// 也不会担心它刷接口,因为知道是谁刷了这个接口,会比较安全User loginUser = userService.getLoginUser(request);String accessKey = loginUser.getAccessKey();String secretKey = loginUser.getSecretKey();SuApiClient tempsuApiClient = new SuApiClient(accessKey, secretKey);// 我们只需要进行测试调用,所以我们需要解析传递过来的参数。Gson gson = new Gson();// 将用户请求参数转换为com.model.User对象com.sujie.suapiclientsdk.model.User user = gson.fromJson(userRequestParams, com.sujie.suapiclientsdk.model.User.class);// 调用YuApiClient的getUsernameByPost方法,传入用户对象,获取用户名String usernameByPost = tempsuApiClient.getUserNameByPost(user);// 返回成功响应,并包含调用结果return ResultUtils.success(usernameByPost);
}
接口发布,在输入参数调用即可返回结果
记得启动接口项目
相关文章:
API项目5:申请签名 在线调用接口
开发申请签名 现在用户已经能看到这个接口了,也能看到这个接口文档,接下来就要在线调用 现在我们可以给每个新注册的用户自动分配一个签名和密钥,去修改一下注册流程: backend 项目,找到 UserServiceImpl.java 中的…...
Google FabricDiffusion:开启3D虚拟试穿新篇章
随着数字化转型的步伐不断加快,时尚界也在探索如何利用最新技术为消费者带来更加沉浸式的购物体验。在这一背景下,Google 推出了一项名为 FabricDiffusion 的新技术,这项技术能够将2D服装图像中的高质量织物纹理转移到任意形状的3D服装模型上,从而为3D虚拟试穿提供了更为真…...
【开发语言】c++的发展前景
C作为一种历史悠久且功能强大的编程语言,在软件开发领域一直保持着其独特的地位和广泛的应用前景。尽管近年来出现了许多新的编程语言和技术趋势,但C由于其高性能、低层访问能力以及广泛的生态系统,在多个领域依然具有不可替代的优势。以下是…...
【机器学习】图像识别——计算机视觉在工业自动化中的应用
1. 引言 随着人工智能(AI)和机器学习(ML)的快速发展,计算机视觉已成为工业自动化中的核心技术之一。图像识别,作为计算机视觉领域的重要分支,能够通过分析和理解图像或视频数据来识别、分类或检…...
lstm基础知识
lstm前言 LSTM(Long short-term memory)通过刻意的设计来避免长期依赖问题,是一种特殊的RNN。长时间记住信息实际上是 LSTM 的默认行为,而不是需要努力学习的东西! 在标准的RNN中,这个重复模块具有非常简单的结构,例…...
Linux :at crontab简述
at命令 在指定的日期、时间点自动执行预先设置的一些命令操作,属于一次性计划任务系统服务的名称:/etc/init.d/atd存放一次性计划任务的文件:/var/spool/at/^a 依靠 /etc/at.allow(白名单)和 /etc/at.deny(…...
Python,Swift,Haskell三种语言在使用正则表达式上的方法对比
这里插入图片描述](https://i-blog.csdnimg.cn/direct/fea1494d0d0c4c9880881493929a8b91.png)在讨论 Python、Swift 和 Haskell 在正则表达式处理字符串方面的优缺点时,可以从它们对正则表达式的支持、灵活性和性能进行比较。以下通过具体的正则表达式字符串匹配例…...
leetcode力扣刷题系列——【三角形的最大高度】
题目 给你两个整数 red 和 blue,分别表示红色球和蓝色球的数量。你需要使用这些球来组成一个三角形,满足第 1 行有 1 个球,第 2 行有 2 个球,第 3 行有 3 个球,依此类推。 每一行的球必须是 相同 颜色,且相…...
工业相机解决方案
工业相机是一种特殊类型的相机,适用于恶劣条件(如高温、高压和振动)下的工作,在控制生产周期、跟踪输送机上的单元、检测超小零件等方面发挥着重要作用。针对工业相机的解决方案,朗观视觉小编认为,可以从以…...
设计一个高效的日志分析系统:自动检测错误日志的实用指南
设计一个高效的日志分析系统:自动检测错误日志的实用指南 在现代软件开发和运维中,日志分析是确保系统稳定性和性能的重要环节。通过对日志的分析,开发者和运维人员可以快速定位问题、优化性能并提高用户体验。本文将介绍如何设计一个日志分析系统,重点关注错误日志的自动…...
英语学习--如果你的父母不听你的话
所有的 Eng中文Eng中文children小孩儿们opposite…在…对面maths数学to take带走;接受;乘坐a way方法,道brave勇敢的few很少more很多more更多able能够when什么时候;…的时候to own拥有a child孩子later一会儿to feel感觉to find找…...
LeetCode:3258.统计满足k约束的子串数量 I(滑动窗口 Java)
目录 3258.统计满足k约束的子串数量 I 题目描述: 实现代码与解析: 滑动窗口 原理思路: 3258.统计满足k约束的子串数量 I 题目描述: 给你一个 二进制 字符串 s 和一个整数 k。 如果一个 二进制字符串 满足以下任一条件&#…...
如果用Java设计MySQL中表级锁、行级锁和间歇锁会是怎么的?
在 MySQL 中,锁机制是确保数据一致性和并发控制的重要手段。MySQL 支持多种锁类型,包括表级锁、行级锁等,每种锁的适用场景、影响范围和实现机制各不相同。我们将逐一介绍它们,并通过模拟代码展示不同锁的实现。 1. 锁类型及其影…...
GIT batch的支持中文的方法和系统建议
GIT batch是window下原生的GIT命令行终端,兼顾了GIT的命令特性,同时也支持很多UNIX的原生的bash交互方法。但是由于编码问题,在使用GIT bach的时候,用户可能会遇到中文支持的问题。这里简单介绍一下GIT batch在Windows系统下如何有…...
骑砍霸主MOD天芒传奇Ⅱ·前传-序章
基于少年包青天第一到三部的闯关夺宝MOD,故事发生在北宋仁宗年间,玩家需要代替包拯寻找天芒,最终完成统一大业.开局可尝试使用暴雨梨花针神器. MOD下载地址: 【免费】PLReminiscence资源-CSDN文库https://download.csdn.net/download/qq_35829452/89851155效果演示: 骑砍2霸…...
神经网络量化基础
1,模型量化概述 1.1,模型量化优点1.2,模型量化的方案 1.2.1,PTQ 理解 1.3,量化的分类 1.3.1,线性量化概述 2,量化算术 2.1,定点和浮点2.2,量化浮点2.2,量化算…...
飞机大战告尾
参考 PPO算法逐行代码详解 链接 通过网盘分享的文件:PlaneWar 链接: https://pan.baidu.com/s/1cbLKTcBxL6Aem3WkyDtPzg?pwd1234 提取码: 1234 10.17关于博客发了又改这件事 悲催的事 今天训练了一早上ppo模型,满怀期待的检测成果时发现一点长进都…...
支持向量机SVM原理详解
SVM原理详解 1、超平面2、SVM原理1. 问题定义2. 分类决策得到约束条件 3. 最大化间隔4. 优化目标 3、凸优化问题1. 原始优化问题优化目标约束条件 2. 拉格朗日乘子法3. 拉格朗日函数分析4. 求解对 w w w 和 b b b 的极值5. 构造对偶问题对偶问题的约束条件: 6、通…...
使用JMeter进行Spring Boot接口的压力测试
使用 Apache JMeter 对接口进行压力测试是一个相对简单的过程。以下是详细的步骤,包括安装、配置和执行测试计划。 1. 下载和安装 JMeter 下载 JMeter 从 JMeter 官方网站https://jmeter.apache.org/download_jmeter.cgi 下载最新版本的 JMeter。 解压缩 将下载的 …...
C++学习笔记----9、发现继承的技巧(三)---- 尊重父类(1)
当写继承类的时候,需要清楚父类与子类之间的交互。像生成顺序,构造函数链,以及转化都可以是问题的根源。 1、父类构造函数 对象不会马上就能干活;它们必须由父类以及所包含的任意对象进行构建。c定义了如下的生成顺序:…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
comfyui 工作流中 图生视频 如何增加视频的长度到5秒
comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...
热烈祝贺埃文科技正式加入可信数据空间发展联盟
2025年4月29日,在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上,可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞,强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...
