我有一个具有以下签名的Spring控制器:
@GetMapping(path = "/getInfo", produces = { MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE })
public MultipleOutputSchema<CaricamentoMassivoNOBlob> get(@Nullable @RequestParam String nomeUtente,
@Nullable @RequestParam String stato,
@Nullable @RequestParam("startTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDateTime startTime,
@Nullable @RequestParam("endTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDateTime endTime,
Optional<Integer> page, @Nullable @RequestParam Optional<Integer> size,
@Nullable @RequestParam String orderBy) {
//METHOD BODY
}
我试着用下面的GET通过邮递员呼叫它:
http://localhost:8180/gateway/api/v1.0.0/getInfo?page=1&size=1&startTime=2022-07-12
我收到了400个坏请求。我知道问题与startTime参数有关,但我不知道如何更改它.我检查了here,这似乎是正确的..。
提前感谢
发布于 2022-07-12 11:41:35
在你的请求中
http://localhost:8180/gateway/api/v1.0.0/getInfo?page=1&size=1&startTime=2022-07-12
您正在以表单startTime
发送查询参数YYYY-MM-dd
和endTime
,但在控制器端,您试图将其解析为LocalDateTime对象,但应该将其解析为LocalDate对象,因为您是以该形式发送的。LocalDateTime对象有一个表单YYYY-MM-ddTHH:mm:ss.
因此,改变这一点:
@GetMapping(path = "/getInfo", produces = { MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE })
public MultipleOutputSchema<CaricamentoMassivoNOBlob> get(@Nullable @RequestParam String nomeUtente,
@Nullable @RequestParam String stato,
@Nullable @RequestParam("startTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDateTime startTime,
@Nullable @RequestParam("endTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDateTime endTime,
Optional<Integer> page, @Nullable @RequestParam Optional<Integer> size,
@Nullable @RequestParam String orderBy) {
//METHOD BODY
}
对此:
@GetMapping(path = "/getInfo", produces = { MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE })
public MultipleOutputSchema<CaricamentoMassivoNOBlob> get(@Nullable @RequestParam String nomeUtente,
@Nullable @RequestParam String stato,
@Nullable @RequestParam("startTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate startTime,
@Nullable @RequestParam("endTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endTime,
Optional<Integer> page, @Nullable @RequestParam Optional<Integer> size,
@Nullable @RequestParam String orderBy) {
//METHOD BODY
}
或者这个:
@GetMapping(path = "/getInfo", produces = {MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE})
public void get(
@RequestParam("startTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime startTime,
@RequestParam("endTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime endTime
) {
//METHOD BODY
System.out.println(startTime);
System.out.println(endTime);
}
如果您真的想解析您的查询参数到localDateTime对象:
http://localhost:8081/getInfo?startTime=2022-07-12T14:13:12&endTime=2022-07-12T14:13:12
https://stackoverflow.com/questions/72951411
复制相似问题