仿京东开放平台框架,开发自己的开放平台(包含需求,服务端代码,SDK代码)...

本文介绍如何仿照京东开放平台构建一个自有的开放平台,涵盖需求分析、服务端Java代码实现、SDK开发及集成。内容包括调用参数、签名算法、接口入口、业务逻辑和SDK示例。
摘要由CSDN通过智能技术生成

目录

1开放平台需求
1.1调用参数
1.2签名算法

2服务端代码,Java举例
2.1接口入口代码
2.2业务逻辑层
2.3基础工具类

3.SDK代码,Java举例

4.集成SDK,代码举例

现在开放平台越来越多了,下面针对仿京东开放平台框架,封装自己的开放平台,分享给大家。

先感谢一下京东开放平台的技术大佬们,下面从开放平台需求,服务端代码,SDK代码三大块进行分享,有不足之处,欢迎在评论区留言。

1开放平台需求

用户需要按照开放平台的协议规范拼装一个正确的URL,通过Https请求到开放平台既能够获取到所需数据。主要流程包含:填写参数、生成签名、拼装HTTPS请求、发起请求、得到响应结果、解析结果。

1.1调用参数

系统参数:调用任何一个API都需要传入的参数,目前支持的系统参数是:

应用级参数(更多API应用参数参考 接口文档)

1.2签名算法

为了防止API在调用过程中被恶意者拦截随意篡改,调用API是需要传入签名参数,开放平台服务端会根据请求参数对签名进行验证,判断请求参数是否合法。开放平台签名规则过程如下:

将所有请求参数按照字母先后顺序排列,例如:access_token,app_key,method,timestamp,v,360buy_param_json ,

排序为360buy_param_json,access_token,app_key,method,timestamp,v

把所有参数名和参数值进行拼接,例如360buy_param_jsonxxxaccess_tokenxxxapp_keyxxxmethodxxxxxxtimestampxxxxxxvx

把appSecret夹在字符串(上一步拼接串)的两端,例如:appSecret+XXXX+appSecret

使用MD5进行加密,再转化成大写。

2服务端代码,Java举例

服务端基于SpringBoot框架编写,入口放在Controller,业务逻辑写在Service。同时考虑安全性和方便排查问题,会加入输入性校验和访问日志。

2.1接口入口代码

接口只有一个入口,即Controller代码如下:

@Controller
public class RouterController {
   @Resource
   private RouterService routerService;
   @Resource
   private OpenApiLogService openApiLogService;
   /**
    * API接口路由器,接口入口
    *
    * @param request
    * @param zrsc_param_json
    * @return
    */
   @RequestMapping(value = "routerjson", method = RequestMethod.POST)
   @ResponseBody
   public String routerjson(HttpServletRequest request, String zrsc_param_json) {
       if (zrsc_param_json==null||"".equals(zrsc_param_json)) {
           return JsonUtils.objToJson(APIMessageVo.fail(APIErrorEnum.FAIL_PARA_LOSE.getCode(), APIErrorEnum
                   .FAIL_PARA_LOSE.getName()));
       }
       APIMessageVo aPIMessageVo=openApiLogService.secrityCheck(request);
       if(aPIMessageVo.isSuccess()){//安全检测成功
           aPIMessageVo=routerService.router(request, zrsc_param_json);
           openApiLogService.insert(request,aPIMessageVo);
       }
       return JsonUtils.objToJson(aPIMessageVo);
   }
}

2.2业务逻辑层

业务逻辑层,简单举例说明,不同业务有所不同。

public APIMessageVo router(HttpServletRequest request, String zrsc_param_json) {
        String access_token = request.getParameter("access_token");
        String app_key = request.getParameter("app_key");
        String method = request.getParameter("method");
        String sign = request.getParameter("sign");
        APIMessageVo checkResult=this.routerParaCheck(request, zrsc_param_json,access_token,app_key,method,sign);
        if(!checkResult.isSuccess()){//入参检测失败
            return checkResult;
        }
        if (APPInterfaceNameEnum.API_ADDRESS_ADDRESS2PROVICECITY_GET.getName().equals(method)) {//获取省市区街道
            return this.address2provincecity(zrsc_param_json);
        } else {//接口不存在
            return APIMessageVo.fail(APIErrorEnum.FAIL_NOT_FOUND_INTERFACE.getCode(), APIErrorEnum.FAIL_NOT_FOUND_INTERFACE.getName());
        }
    }
 
    private APIMessageVo routerParaCheck(HttpServletRequest request, String zrsc_param_json, String access_token,
                                         String app_key, String method, String sign){
 
        //***************参数校验***************
        if (StringUtils.isBlank(access_token) || StringUtils.isBlank(app_key) || StringUtils.isBlank(method) ||
                StringUtils.isBlank(sign)) {
            return APIMessageVo.fail(APIErrorEnum.FAIL_PARA_LOSE.getCode(), APIErrorEnum.FAIL_PARA_LOSE.getName());
        }
        if(!APP_KEY.equals(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值