SpringBoot进行接口设计

时间:2020-12-01 21:06:06

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

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

SpringBoot进行接口设计

下面贴出有关核心代码:

API端:设计接口

@RequestMapping(value = "/api")
@Controller
public class ApiController extends BaseController{

    @RequestMapping(value = "/getJson.do",method = RequestMethod.POST)
    @ResponseBody
    public 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数据,否则返回一个string
        int 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;
    }

}

接口文档:

SpringBoot进行接口设计


调用结果在浏览器显示:

SpringBoot进行接口设计


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

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

例如生成的MD5串为:4f445e77fa27d9bcce5cefdb0b9613a2

生成的最终签名为:bdfec5eccb9d72af