写接口请求类型为get或post的时,参数定义的几种方式,如何用注解(原创)--雷锋

本文详细介绍了HTTP请求中GET、POST和PUT三种方式的参数定义,包括POST请求的对象使用和GET请求仅用于查询的特点,以及PUT请求在数据修改中的应用。适合理解HTTP请求在接口调用中的不同用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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("请求响应失败");
        }

    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java小当家

你的鼓励是我创作最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值