我正在尝试使用@RequestParam来获取ISO字符串,并将其解析为Date。
使用下面的代码,我尝试使用http://localhost:8989/api/v1/test?date=2019-08-19%2000:00:00.000+0000
进行测试。
但结果是400 Bad Request,当我将date值的类型更改为String时,它是2019-08-19 00:00:00.000 0000
。
public class myController {
@GetMapping(value = "/api/{version}/test", produces = "application/json")
public ResponseEntity<MyList> getFreeList(
@PathVariable
String version,
@RequestParam("date")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSSZ")
Optional<Date> date) {
return new ResponseEntity<>(myService.getList(
date.orElse(null)),
HttpStatus.OK);
}
}
我不能改变URL格式。如何正确获取加号符号?
URL参数必须进行编码
这是调用者的责任。 如果调用者使用Java,他可以简单地将值设置为:
URLEncoder.encode("2019-08-19 000:00:00.000+0000", "UTF-8");
这将被解析为
2019-08-19%2000:00:00.000%2B0000