1.post请求:
@RequestMapping(value = "childwatch/bind", method = RequestMethod.POST, produces = CTRL_PRODUCE)
public ApiResp bind() {
BindChildWatchApiReq req = getRequestObject(BindChildWatchApiReq.class);
if (req == null) {
return ApiResponse.error(CommonErrorCode.REQUEST_IS_NULL);
}
return childWatchApiService.bind(req);
}
一般会有一个对象如
BindChildWatchApiReq,里面会有post请求的所有参数。
2.get请求:
看如下的一个接口,两个参数会拼接到地址后面
后台代码这样接收
也可以用以下方法 @RequestParam 进行注解(使用另一个接口作为例子):
3.put请求:
get一般传参数只进行查询,对数据不做修改。put一般是修改数据。
如请求一个地址请求地址:http://ip:port/contextPath/api/v1/member/{memberId}/childwatch/phone
请求参数:watchPhone
在postman工具(一种进行get,post提交的工具)中这样请求:http://127.0.0.1:10004/api/v3/zVadT9eSkQNz8zPY/childwatch/phone?rnd=ww
可以看出一共传2个参数
memberId和watchPhone
java后台代码如何接收呢,请看下面:
在地址栏里传入的参数这边可以用注解 @PathVariable获得,watchPhone是在对象里获得,和post一样
设备管理对接
package com.yzf.api.report.controller; import com.atc.daizhang.beans.Qy; import com.atc.daizhang.beans.system.Gs; import com.atc.daizhang.system.company.tax.facade.GsFacade; import com.atc.daizhang.system.user.facade.QyFacade; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import com.yzf.accounting.common.base.AjaxResult; import com.yzf.accounting.common.core.utils.configure.XzqhUtil; import com.yzf.api.report.handler.DubboInvokeFactory; import com.yzf.api.report.handler.WebServerHandler; import com.yzf.api.report.vo.BindMsgVO; import com.yzf.api.report.vo.BindVO; import com.yzf.api.report.vo.UntyingDeviceVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; import java.util.HashMap; import java.util.Map; @Api(description = "魔盒对接") @RestController @Slf4j @RequestMapping("/deviceManage") public class DeviceManageController { @Autowired private WebServerHandler webServerHandler; @Autowired private DubboInvokeFactory dubboInvokeFactory; @Value("${bindUrl}") private String bindUrl; static final String BINDDEVICEURL = "deviceManage/api/binding"; static final String QUERYDEVICEURL = "deviceManage/api/deviceInfoForClient"; static final String UNTYINGDEVICEURL = "deviceManage/api/untyingDevice"; static final String READPORTBYBINDINGIDURL = "deviceManage/api/readPortByBindingId"; @ApiOperation("魔盒绑定") @PostMapping("binding") public AjaxResult binding(@RequestBody BindVO bindVO) throws Exception { log.info("魔盒绑定接口入参数:" + bindVO.toString()); String setInfo = webServerHandler.findSetInfo(); QyFacade qyFacade = dubboInvokeFactory.getInvokeService(QyFacade.class, setInfo); Qy qy = qyFacade.selectByPrimaryKey(bindVO.getQyid()); if (qy == null) { return new AjaxResult().fail("根据qyid查询企业信息为空,请确认qyid是否存在"); } BindMsgVO bindMsgVO = new BindMsgVO(); bindMsgVO.setAreaId(XzqhUtil.getProvinceCodeByDqbm(qy.getDqbm()));//省级别 bindMsgVO.setCompanyName(qy.getQymc()); // bindMsgVO.setDeviceSource("1");//(企业版0,代账版1)默认代账版 bindMsgVO.setDeviceSource("2");// bindMsgVO.setMachineCode(bindVO.getMachineCode()); bindMsgVO.setMachineNumber(bindVO.getMachineNumber()); bindMsgVO.setQyid(bindVO.getQyid()); RestTemplate restTemplate = new RestTemplate(); ResponseEntity<String> result = restTemplate.postForEntity(bindUrl + BINDDEVICEURL, bindMsgVO, String.class); if (result.getStatusCode().value() == 200) { ObjectMapper objectMapper = new ObjectMapper(); JsonNode jsonNode = objectMapper.readTree(result.getBody()); if (jsonNode.get("code").asText().equals("0")) { //是否需要查询绑定信息 return new AjaxResult(jsonNode.get("result")).success(); } else { return new AjaxResult().fail(jsonNode.get("message").asText()); } } else { return new AjaxResult().fail("请求响应失败"); } } @ApiOperation("魔盒绑定设备查询") @GetMapping("deviceInfoForClient") public AjaxResult deviceInfoForClient( @ApiParam(value = "设备类型 设备类型 -CA-CA SKP-税控盘 SIMS-短信设备", required = true) @RequestParam String portType, @ApiParam(value = "企业ID", required = true) @RequestParam Long qyid, @ApiParam(value = "机柜类型", defaultValue = "1") @RequestParam String jglx ) throws Exception { log.info("查询魔盒绑定接口入参数:" + "portType:" + portType + ",qyid:" + qyid + ",jglx:" + jglx); String setInfo = webServerHandler.findSetInfo(); QyFacade qyFacade = dubboInvokeFactory.getInvokeService(QyFacade.class, setInfo); Qy qy = qyFacade.selectByPrimaryKey(qyid); if (qy == null) { return new AjaxResult().fail("根据qyid查询企业信息为空,请确认qyid是否存在"); } GsFacade gsFacade = dubboInvokeFactory.getInvokeService(GsFacade.class, setInfo); Gs gs = gsFacade.queryGsByQyid(qyid); if(gs==null){ return new AjaxResult().fail("根据qyid查询信息为空,请确认qyid是否存在"); } RestTemplate restTemplate = new RestTemplate(); Map<String, Object> map = new HashMap<>(); map.put("nsrsbh", gs.getGsnsrsbh()); map.put("portType", portType); map.put("qyid", qyid); map.put("qymc", qy.getQymc()); /* map.put("gdsbz", null); map.put("taxManageCode", null); map.put("tyshxydm", null);*/ //ResponseEntity<String> result = restTemplate.getForEntity(bindUrl + QUERYDEVICEURL+"?gdsbz={gdsbz}&nsrsbh={nsrsbh}&portType={portType}&qyid={qyid}&qymc={qymc}&taxManageCode={taxManageCode}&tyshxydm={tyshxydm}", String.class, map); ResponseEntity<String> result = restTemplate.getForEntity(bindUrl + QUERYDEVICEURL + "?nsrsbh={nsrsbh}&portType={portType}&qyid={qyid}", String.class, map); if (result.getStatusCode().value() == 200) { ObjectMapper objectMapper = new ObjectMapper(); JsonNode jsonNode = objectMapper.readTree(result.getBody()); if (jsonNode.get("code").asText().equals("0")) { return new AjaxResult(jsonNode.get("result")).success(); } else { return new AjaxResult().fail(jsonNode.get("message").asText()); } } else { return new AjaxResult().fail("请求响应失败"); } } @ApiOperation("魔盒解绑") @PostMapping("untyingDevice") public AjaxResult untyingDevice(@RequestBody UntyingDeviceVO untyingDeviceVO) throws Exception { log.info("魔盒解绑接口入参数:" + untyingDeviceVO.toString()); ObjectMapper objectMapper=new ObjectMapper(); ObjectNode objectNode=objectMapper.createObjectNode(); objectNode.put("bindingId",untyingDeviceVO.getQyid()); objectNode.put("machineCode",untyingDeviceVO.getMachineCode()); objectNode.put("machineNumber",untyingDeviceVO.getMachineNumber()); RestTemplate restTemplate = new RestTemplate(); ResponseEntity<String> result = restTemplate.postForEntity(bindUrl + UNTYINGDEVICEURL, objectNode, String.class); if (result.getStatusCode().value() == 200) { JsonNode jsonNode = objectMapper.readTree(result.getBody()); return new AjaxResult(jsonNode.get("message")).success(); } else { return new AjaxResult().fail("请求响应失败"); } } @ApiOperation("读取端口") @GetMapping("readPortByBindingId") public AjaxResult readPortByBindingId(@ApiParam(value = "绑定id", required = true) @RequestParam Long qyid) throws Exception { String setInfo = webServerHandler.findSetInfo(); QyFacade qyFacade = dubboInvokeFactory.getInvokeService(QyFacade.class, setInfo); Qy qy = qyFacade.selectByPrimaryKey(qyid); if (qy == null) { return new AjaxResult().fail("根据qyid查询企业信息为空,请确认qyid是否存在"); } ObjectMapper objectMapper=new ObjectMapper(); ObjectNode jsonNode=objectMapper.createObjectNode(); String xzqhId=XzqhUtil.getProvinceCodeByDqbm(qy.getDqbm()); jsonNode.put("bindingId",qyid); jsonNode.put("xzqhId",xzqhId); RestTemplate restTemplate = new RestTemplate(); ResponseEntity<String> result = restTemplate.postForEntity(bindUrl + READPORTBYBINDINGIDURL, jsonNode, String.class); log.info("读取端口结果:"+result); if (result.getStatusCode().value() == 200) { return new AjaxResult(result.getBody()).success(); } else { return new AjaxResult().fail("请求响应失败"); } } }