接口开发,接口设计与开发规范

Oden 416 2022-07-12


前景:公司最近要对接接口,所以要根据具体的字段进行接口开发

 要求:自己先做一个接口上线,这个接口的作用是能够校验对面系统传过来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小时内删除侵权内容。

上一篇:营销头版:麦当劳摊上事了!
下一篇:文案君:动画师放假了?没上色都能发布?!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~