Java 当我在Swagger中输入日期时,得到400个错误请求的响应

Java 当我在Swagger中输入日期时,得到400个错误请求的响应,java,spring-boot,swagger,swagger-ui,swagger-2.0,Java,Spring Boot,Swagger,Swagger Ui,Swagger 2.0,我的一个端点采用Java代码中的两个参数,数据/格式类型为日期。在swagger中,API将预期输入显示为: string($date-time) (查询) 当我在两个参数框中输入2020-07-07T01:08:10Z时,我得到状态代码400错误请求的响应。我还试过使用2020-07-07T01:08:10.873Z 我给错日期格式了吗?。请帮忙 编辑: 编辑: 仅供参考:当我在正文中传递日期时,相同的日期格式可以正常工作,但当我将其作为查询参数传递时则不行。下面工作正常 否,您没有使用错

我的一个端点采用Java代码中的两个参数,
数据/格式类型
日期
。在swagger中,API将预期输入显示为:

string($date-time)
(查询)

当我在两个参数框中输入
2020-07-07T01:08:10Z
时,我得到状态代码
400错误请求的响应。我还试过使用
2020-07-07T01:08:10.873Z

我给错日期格式了吗?。请帮忙

编辑:

编辑:

仅供参考:当我在正文中传递日期时,相同的日期格式可以正常工作,但当我将其作为查询参数传递时则不行。下面工作正常


,您没有使用错误的日期格式

  • 日期时间–日期时间符号,例如,2020-07-07T01:08:10Z
可能还有其他原因导致后端java服务器无法访问您的请求。请发布您的最小java代码,如果可能的话,还可以大摇大摆地发布最小yml定义。因此,我们可以检查您面临的问题

在问了各种乒乓球问题之后,澄清了我的疑问

我发现您的后端代码有一个问题,就是您使用start_date和end_date
java.util.date
作为查询参数。但您正在使用一个字符串进行请求,该字符串引发解析
IllegalArgumentException
,并导致
400错误请求
。因此,要解决此问题,您需要更改后端代码,将格式添加为
@DateTimeFormat(iso=DateTimeFormat.iso.DATE\u TIME)
,这在现场得到了完美的演示。变更代码如下所示:

@GetMapping("/findAllEventsWithoutLogin")
    public Collection<GeneralEvent> getAllEvents(@RequestParam("start_date")  @DateTimeFormat (iso = DateTimeFormat.ISO.DATE_TIME) Date startDate,
            @RequestParam("end_date")  @DateTimeFormat (iso = DateTimeFormat.ISO.DATE_TIME) Date endDate) {
@GetMapping(“/findAllEventsWithoutLogin”)
公共集合getAllEvents(@RequestParam(“开始日期”)@DateTimeFormat(iso=DateTimeFormat.iso.date\u时间)日期开始日期,
@RequestParam(“end_date”)@DateTimeFormat(iso=DateTimeFormat.iso.date_TIME)date endDate{
请检查此项以详细了解此问题


如果您想检查已完成的代码,请访问我的。

我猜Swagger是错误的-它下面的代码期望与Swagger文档不同。您的代码输入看起来很好。您有权访问基础服务吗?屏幕截图和代码端点不同。SearchEventsByCategory不带Login和findAllEventsWithoutLogin。在点击rest服务时,请检查您是否使用了正确的端点。如果开始日期和结束日期,特别是日期格式转换有任何问题,则这些值将被分配为null,但不会响应
400错误请求。
。是的,错误地复制了错误的屏幕截图。但是点击了正确的端点int在swagger中,java后端代码有一个问题,那就是您将开始日期作为字符串发送,将接收日期作为java.util.date。因此,要解决这个问题,您可以检查我将相应更新的答案部分。

package com.events.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@EnableSwagger2

@Configuration
public class SwaggerConfig {

    @Bean
    public Docket productApi() {

        return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any()).build();
    }
}

@GetMapping("/findAllEventsWithoutLogin")
    public Collection<GeneralEvent> getAllEvents(@RequestParam("start_date")  @DateTimeFormat (iso = DateTimeFormat.ISO.DATE_TIME) Date startDate,
            @RequestParam("end_date")  @DateTimeFormat (iso = DateTimeFormat.ISO.DATE_TIME) Date endDate) {