接口开发,接口设计与开发规范
前景:公司最近要对接接口,所以要根据具体的字段进行接口开发
要求:自己先做一个接口上线,这个接口的作用是能够校验对面系统传过来JSON串,进行解析,并获取所需要的字段,根据状态修改数据库数据的状态
POST请求 JSON串(下面为接受JSON串的格式)
{"list": [{"strInvCode": "S2VGCPTLDh","strInvNo": "vn3RFQChaX","strAppNo": "HHB20100002","strStatu": "Y","msg": "","strInvDate": ""}]}
postman接口调试界面
接口代码<学童阶段----勿喷>
@RequestMapping(value = "/redInterface") public @ResponseBody String redInterface(HttpServletRequest request) throws Exception { String message = ""; List<Map<String, String>> datalist = new ArrayList<>(); try { StringBuffer receive = new StringBuffer(); BufferedInputStream in = null; JSONObject resultJson; in = new BufferedInputStream(request.getInputStream()); int k; char c; while ((k = in.read()) != -1) { c = (char) k; receive.append(c); } String data = receive.toString(); JSONObject json = JSONObject.fromObject(new String(data.getBytes(), "utf-8")); JSONArray JsonList = json.getJSONArray("list"); for (int j = 0; j < JsonList.size(); j++) { Map map = new LinkedHashMap<>(); JSONObject jsondemo = JsonList.getJSONObject(j); String strAppNo = jsondemo.getString("strAppNo") ==null ? "":jsondemo.getString("strAppNo").toString(); String strInvCode = jsondemo.getString("strInvCode") ==null ? "":jsondemo.getString("strInvCode").toString(); String strInvNo = jsondemo.getString("strInvNo") ==null ? "":jsondemo.getString("strInvNo").toString(); String strStatu = jsondemo.getString("strStatu") ==null ? "":jsondemo.getString("strStatu").toString(); String msg = jsondemo.getString("msg") ==null ? "":jsondemo.getString("msg").toString(); String strInvDate = jsondemo.getString("strInvDate") ==null ? "":jsondemo.getString("strInvDate").toString(); try {//首先判断状态是否为空 if(strStatu.equals("")){ message = "字段strStatu:状态为空"; //判断状态是否为Y/N }else if(!(strStatu.equals("Y")||strStatu.equals("N"))){ message = "字段msg:状态不为Y/N"; }else if(strInvCode.equals("") || strInvNo.equals("")) { message = "发票代码(strInvCode)或 发票号码(strInvNo)为空!!"; }else if(strAppNo.equals("")){ message = "字段strAppNo:申请单号为空!"; }else if(strStatu.equals("Y")) { //根据发票代码和发票号码修改状态 //int flag = redDataService.redInterface(strInvCode, strInvNo); //根据原申请单号修改状态 int flag = redDataService.redInterfaceStrY(strAppNo); if (flag == 4) { message = "success"; } else if (flag == 3) { message = " 数据库中有数据,但修改异常 "; } else if (flag == 2) { message = " 该申请单号不是红冲票据的申请单号 "; } else { message = " 数据库中没有这条数据 "; } }else if(strStatu.equals("N")){ int flag = redDataService.redInterfaceStrN(strAppNo); if (flag == 4) { message = "success"; } else if (flag == 3) { message = " 数据库中有数据,但修改异常 "; } else if (flag == 2) { message = " 该申请单号不是红冲票据的申请单号 "; } else { message = " 数据库中没有这条数据 "; } } map.put("strAppNo", strAppNo); map.put("message", message); datalist.add(map); } catch (Exception e) { map.put("message", e.getMessage()); } } } catch (Exception e) { e.printStackTrace(); } Map data = new HashMap<>(); data.put("data", datalist); JSONObject jsonObject = JSONObject.fromObject(data); return jsonObject.toString(); }
接口设计与开发规范
设计JAVA开发的RESTFUL接口规范,需要满足以下要求:
controller类指定@Api注解
指定@Api的value属性、指定@Api的tags属性
controller类接口对应方法指定@ApiOperation注解
指定@ApiOperation的value属性
接口命名请以listing,delete, add等英文字母开头,目前定义的英文开头参考如下:
新增接口:addXxx 分页接口:pagingXxx 列表接口:listingXxx\queryXxx 树接口:plantXxx 更新接口:updateXxx 获取详情接口:detailsXxx\getXxx 删除接口:deleteXxx 激活接口:activateXxx 冻结接口:freezeXxx 下载文件:downloadFile 判断文件存在:existsFile 复制文件:copyFile 上传文件:uploadFile 文件压缩:compressFile 文件解压:decompressFile 同步文件:syncFile 识别文件:recogniseFile 获取文件详情:detailsFile
接口命名规范5到16位以小写开头的大小写英文字母
@RequestMapping指定method属性
接口的请求参数,若是model对象的,请指定好@ApiModelProperty及它的简要描述属性value,若不是model的,请指定好@ApiImplicitParams及它@ApiImplicitParam中的name及value简要描述属性。例如:
@ApiImplicitParams(value = { @ApiImplicitParam(name = "subjectId", value = "学科ID") })public ResponseEntity<?> getKnowledgeChart(@RequestParam String subjectId)或者 class school{ @ApiModelProperty(value="用户名",name="userName") private String userName;}
Api的请求url路径要求http://ip:port/微服务名称/{多级模块}/{动宾结构的方法名称},例如:http://192.168.0.0:18090/微服务名称/user/getUser,注意:
多级模块:名称请使用名词。例如:/management/public/
多级模块:业务型微服务按多级菜单去分层划分模块,例如:/综合管理/公共资源/。功能型微服务按功能区分模块,例如:/文件/。
url接口命名不要出现数字
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~