接口可以方便前后端分离,也可以方便他人调用。所以项目进行接口设计是有必要的。这里使用SpringBoot基于REST风格快速进行接口设计。

有关源码和资料可在:https://download.csdn.net/download/qq_36135928/10309244点击打开链接可以进行下载。

下面贴出有关核心代码:

API端:设计接口

@RequestMapping(value = "/api")
@Controller
public class ApiController extends BaseController{@RequestMapping(value = "/getJson.do",method = RequestMethod.POST)@ResponseBodypublic String getJson(){//获取请求中的数据PageData pageData = super.getPageData();//封装返回结果PageData result = new PageData();//签名验证if(!DigestUtil.toSign(pageData).equals(pageData.getString("sign"))){result.put("errCode",100);result.put("errMsg","签名验证失败");return JsonUtil.getJson(result);}//获取请求中的参数//比如传递的参数是 1 就返回一个list数据,否则返回一个stringint parameter = pageData.getInt("parameter");//根据获得的参数,写处理逻辑,可以与数据库交互,这里模拟一个list返回if(parameter == 1){//模拟数据,可与dao层连接List<String> list = new ArrayList<>();list.add("clare");list.add("tung");//参数匹配返回结果result.put("data",JsonUtil.listToJson(list));result.put("errCode",0);result.put("errMsg","");return JsonUtil.getJson(result);}//其他结果返回result.put("data","Nothing");result.put("errCode",102);result.put("errMsg","请求没有结果");return JsonUtil.getJson(result);}
}

Manager端:调用接口

@Service("managerService")
public class ManagerService {public String getJson(int parameter) {//封装请求信息PageData htp = new PageData();htp.put("version","1");htp.put("r",String.valueOf((int)(Math.random()*100)));htp.put("parameter",String.valueOf(parameter));//签名htp.put("sign", DigestUtil.toSign(htp));//发送请求,获得返回数据String json = HttpClientUtils.doPost("http://localhost:8100/api/getJson.do",htp);//可对数据进行处理Map map = JSON.parseObject(json);//签名验证失败if(map.get("errCode").toString().equals("100")){return map.get("errMsg").toString();}//这里直接返回整个json串,看一下效果return json;}}

接口文档:

调用结果在浏览器显示:

补充:签名算法:(签名认证是一种安全机制)

对待签名字符串采用MD5进行加密,将加密串全部转换为小写字母,取第8位开始的16个字符进行反转,生成最终的签名字符串。

例如生成的MD5串为:4f445e77fa27d9bcce5cefdb0b9613a2

生成的最终签名为:bdfec5eccb9d72af

SpringBoot进行接口设计相关推荐

  1. Springboot项目如何设计接口中敏感字段模糊查询?

    目录 前言 场景分析 实现方案 环境配置 依赖配置 代码实现 总结 前言 在<Springboot项目如何设计接口中敏感字段的加密.解密>和<Springboot项目如何设计接口中敏 ...

  2. Java后端返回通用接口设计

    我印象中,通用返回接口设计是有两种方式,第一种是自定义返回数据的通用类,另一种是springboot中实现ResponseBodyAdvice接口,实现返回数据格式的统一,如我说的有错,请大佬指出.本 ...

  3. SpringBoot提供接口实现Excel导入数据并存储到数据库中

    SpringBoot提供接口实现Excel导入数据并存储到数据库中 完整项目文件 1 效果展示 1.1 Excel数据 zxy.xlsx 1.2 导入后数据库中数据 CREATE TABLE `use ...

  4. Django博客系统注册(图形验证码接口设计和定义)

    1. 准备captcha包(该包用于生成图形验证码) 1.将生成图片验证码的库复制到新建的libs包中. 2.安装Python处理图片的库 这儿可能会变红显示错误: 解决方案:在虚拟环境中安装Pill ...

  5. 微服务之API网关接口设计

    微服务之API网关接口设计 API网关,顾名思义,就是外部到内部的一道门,其主要功能: 服务路由:将前段应用的调用请求路由定位并负载均衡到具体的后端微服务实例,对于前端应用看起来就是1个应用提供的服务 ...

  6. 蓝牙(BLE)应用框架接口设计和应用开发——以TI CC2541为例

    本文从功能需求的角度分析一般蓝牙BLE单芯片的应用框架(SDK Framework)的接口设计过程,并以TI CC2541为例说明BLE的应用开发方法. 一.应用框架(Framework) 我们熟知的 ...

  7. CPLD/FPGA的UART接口设计之系统时钟(晶振)和波特率关系

    UART(UniversalAsynchronous ReceiverTransmitter,通用异步收发器)是一种广泛使用的异步串行数据通信协议.目前大多数MCU.串口通信IC等芯片或模块均支持UA ...

  8. PHP/TP5 接口设计中异常处理

    PHP提供 Exception 类来处理异常 new Exception('错误信息(默认为空)','错误代码(默认0)','异常链中前一个异常') 然后可以通过 e -> getMessage ...

  9. 【C 语言】文件操作 ( 配置文件读写 | 业务逻辑 | 接口设计 )

    文章目录 一.配置文件读写 业务逻辑 二.接口设计 1.写文件接口 2.读文件接口 3.修改文件接口 4.接口合并 一.配置文件读写 业务逻辑 开发一个系统 , 在命令行中实现如下功能 , 通过命令操 ...

最新文章

  1. 获得服务器硬件信息(CPUID、硬盘号、主板序列号、IP地址等)
  2. java 算法--洗牌算法
  3. 如何正确强制执行Git推送?
  4. opencv视频处理和检测学习总结
  5. 窗口移到屏幕边上拉不出来解决办法
  6. Linux对文件内容基本操作(学习笔记七)
  7. android高德天气api接口,天气查询-API文档-开发指南-Web服务 API | 高德地图API
  8. 华为鸿蒙系统HarmonyOS手机,华为鸿蒙系统2.0适配哪些机型
  9. OO第三次电梯作业优化
  10. C盘软件(应用)搬家瘦身
  11. WLAN RTT (IEEE 802.11mc)
  12. spring 中事物的使用
  13. 一文带你了解软件测试的价值,以后别再说软测天天在划水啦
  14. 浅谈网络安全应急预案
  15. 什么是强化学习?强化学习之父:它是人工智能的未来
  16. 1 天卖 1.96 亿,知识付费浪潮下的喜马拉雅是如何做增长的
  17. 【Educoder作业】问题求解——进制
  18. 收集一些好玩的注释,HAVE FUN!!!
  19. Nervos 双周报第 7 期:Dev Meetup 正式更名为 Crypto Wednessday 啦!
  20. c4d安装没有出现语言文字,c4d中文教程大合集 HDT映速教程 C4D自学全攻略(四部全集)...

热门文章

  1. 服务器无限火力时间,《英雄联盟》无限火力2019时间表 无限火力什么时候开
  2. DNSPod十问李尚予:真人销售拼得过AI销售吗?
  3. XenServer常用命令
  4. Mysql锁(表级锁,页级锁,行级锁)
  5. HackTheBox Ambassador 枚举获得用户shell,git consul API提权
  6. 线程安全的CopyOnWriteArrayList集合
  7. 普通键盘和机械键盘的区别
  8. ORM概念,tortoise-orm安装
  9. 泰拉瑞亚ce不用重铸修改攻速,改物品,改攻击等
  10. fulltext mysql_MySQL 全文检索方案 - FULLTEXT 索引