zoukankan      html  css  js  c++  java
  • java 请求参数键值对重复问题

    java在通过url访问接口的过程中,url需传入参数,可将请求参数作为键、请求参数获取的值作为值。在传参过程中,若键出现重复,则会出现覆盖现象,值可出现重复现象。

    如以下案例:

    案例1:

    controller层:

    @RestController
    @RequestMapping("api")
    public class MemberController {

    @RequestMapping(value = "v2/member/member/resources/update") // 修改我的资源
    public Object resourcesUpdate(
    @RequestParam String rName,
    @RequestParam String rDesc,
    @RequestParam String id,
    @RequestParam(value = "Images", required = false) MultipartFile[] Images,
    HttpServletRequest request) {
    Member member = memberService.checkIdAndToken(request);
    if (member == null) {
    return new APIResult(1000, "登录失效");
    }
    MemberResources memberResources = memberResourcesService.getByIdAndMemberId(id, member.getId());
    memberResources.setRname(rName);
    memberResources.setrDesc(rDesc);
    memberResources.setCreateTime(new Date());
    if (Images != null && Images.length > 0) {
    String images = "[";
    if (Images != null && Images.length > 0) {
    for (int i = 0; i < Images.length; i++) {
    String imageUrl = imageUploadService.uploadFile(Images[i]);
    if (i == 0) {
    images += imageUrl;
    continue;
    } else {
    images += "," + imageUrl;
    }
    }
    }
    images += "]";
    // 保存图片集合
    memberResources.setImgUrl(images);
    }
    MemberResources memberResources1 = memberResourcesService.save(memberResources);

    return APIResult.createSuccess(memberResources1);
    }

    }

    service层

    public Member checkIdAndToken(HttpServletRequest request) {
    String id = HttpRequestUtils.getHeaderByName(request, "id");
    String token = HttpRequestUtils.getHeaderByName(request, "token");
    if (id == null) {
    id = request.getParameter("id");
    }
    if (token == null) {
    token = request.getParameter("token");
    }
    return memberRepository.findByIdAndToken(id, token);
    }

    若要对该接口进行访问,访问路径为:127.0.0.1:8080/api/v2/member/member/resources/update? id=**&token=**&rName=**&rDesc&id=**&images=**

    id出现重复,请求结果返回"登录失效",若要解决此问题,可对controller层的id进行重命名,如rid。

    案例2:

    controller层:

    @RestController
    @RequestMapping("api")
    public class MemberController {

    @RequestMapping(value = "v2/member/member/resources/list") // 查询我的资源
    public Object resourcesList(@RequestParam String memberId,
    @RequestParam(required = false, defaultValue = PageConstants.DEFAULT_PAGE_NUMBER) Integer page,
    @RequestParam(required = false, defaultValue = PageConstants.DEFAULT_PAGE_SIZE) Integer size,
    HttpServletRequest request) {
    Member member = memberService.checkIdAndToken(request);
    if (member == null) {
    return new APIResult(1000, "登录失效");
    }
    if (memberId != null && !memberId.equals("")) {
    } else {
    memberId = member.getId();
    }
    List<MemberResources> memberResourcesList = memberResourcesService
    .getListByMemberIdOrderByCreateTimeDesc(memberId, page, size);
    List<MemberResourcesVO> memberResourcesVOList = new ArrayList<>();
    for (MemberResources memberResources : memberResourcesList) {
    MemberResourcesVO memberResourcesVO = new MemberResourcesVO();
    memberResourcesVO.setId(memberResources.getId());
    memberResourcesVO.setCreateTime(memberResources.getCreateTime());
    memberResourcesVO.setMemberId(memberResources.getMemberId());
    memberResourcesVO.setrDesc(memberResources.getrDesc());
    memberResourcesVO.setrName(memberResources.getRname());
    if (memberResources.getImgUrl() != null && !memberResources.getImgUrl().equals("")) {
    String imgUrl = memberResources.getImgUrl();
    imgUrl = imgUrl.substring(1, imgUrl.length() - 1);
    if (imgUrl.length() > 0) {
    String[] img = imgUrl.split(",");
    memberResourcesVO.setImgUrl(img);
    } else {
    memberResourcesVO.setImgUrl(null);
    }
    }
    memberResourcesVOList.add(memberResourcesVO);
    }
    return APIResult.createSuccess(memberResourcesVOList);
    }

    }

    service层

    public Member checkIdAndToken(HttpServletRequest request) {
    String id = HttpRequestUtils.getHeaderByName(request, "id");
    String token = HttpRequestUtils.getHeaderByName(request, "token");
    if (id == null) {
    id = request.getParameter("id");
    }
    if (token == null) {
    token = request.getParameter("token");
    }
    return memberRepository.findByIdAndToken(id, token);
    }

    这里的请求参数memberId可以为其他用户的id,也可以为登录用户的ie,还可以为空,若只考虑memberId=id,将缩减业务范畴。

  • 相关阅读:
    HDU2027 统计元音 一点点哈希思想
    湖南工业大学第一届ACM竞赛 数字游戏 字符串处理
    湖南工业大学第一届ACM竞赛 我素故我在 DFS
    HDU3293sort
    HDU2082 找单词 母函数
    HDU1018 Big Number 斯特林公式
    湖南工业大学第一届ACM竞赛 分糖果 位操作
    UVA 357 Let Me Count The Ways
    UVA 147 Dollars
    UVA 348 Optimal Array Multiplication Sequence
  • 原文地址:https://www.cnblogs.com/qqzhulu/p/10162807.html
Copyright © 2011-2022 走看看