spring urlencode、urldecode

今天遇到一个类似于下面这样的一个问题,后端写了一个 GET resful 接口,请求的时候需要带一个test参数,当请求参数里有+号的时候,后端接口把+号替换成了 空字符串。

客户端请求如下:

curl localhost/rest/test?test=123456+

后端接口如下:

@RestController
@RequestMapping("/rest")
public class TestController {

  @RequestMapping("/test")
  public ResponseEntity<String> test(@RequestParam String test){
    return ResponseEntity.ok("Requested: " + test);
  }
}

后端调试接口获得的值为
'123456 ’
之所以出现这个原因就是,+号在url参数里的时候必须要进行编码,否则后端就会出现问题,把+号,当做空字符串来进行处理。但是如果前端调用接口的时候进行了编码,那么后端就需要进行相应的解码,否则也会出问题。

把url里的参数进行编码后变成下面这样了:

123456%2b

后端接口debug的时候取到的值如下:

123456+

可以看到,后端获取了正确的数据,或许有些人感觉很奇怪,我并没好对参数进行解码,为什么还是可以获取到正确的数据呢?
其实spring @RequestParam这个注解标识的参数,会自动的进行解码,spring帮我们做了这样一件事情。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值