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 memberResourcesList = memberResourcesService

.getListByMemberIdOrderByCreateTimeDesc(memberId, page, size);

List 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,将缩减业务范畴。

原文:https://www.cnblogs.com/qqzhulu/p/10162807.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值