当前位置: 首页 > 知识库问答 >
问题:

Swagger for java-所需字段阻止执行

宋臻
2023-03-14

我使用的是带有以下Maven依赖项的swagger:

 <dependency>
        <groupId>io.swagger.core.v3</groupId>
        <artifactId>swagger-jaxrs2</artifactId>
        <version>2.0.9</version>
    </dependency>

我编写了一个API调用,如下所示:

@Operation(
        method = "GET",
        summary = "Get alerts by Date Range",
        extensions = @Extension(name = "x-rest-api", properties = @ExtensionProperty(name = "public", value = "true")),
        parameters = {
                @Parameter(name = "startDate",
                        in = ParameterIn.QUERY,
                        description = "Get alerts from this date. `startDate` should be in GMT and 24 hour Clock",
                        example = "2020-07-15T15:57:00Z",
                        schema = @Schema(implementation = ZonedDateTime.class),
                        required = true),
                @Parameter(name = "endDate",
                        in = ParameterIn.QUERY,
                        description = "Get alerts to this date. `endDate` should be in GMT and 24 hour Clock",
                        example = "2020-07-20T15:57:00Z",
                        required = true)
        },
        responses = {
                @ApiResponse(
                        responseCode = "200",
                        description = "A list of alerts",
                        content = @Content(schema = @Schema(implementation = AlertObject .class))),
                @ApiResponse(
                        responseCode = "401",
                        description = "Invalid Bearer Token",
                        content = @Content(schema = @Schema(implementation = ApiException.class))
                )
        }
)
@GET
@Path("/old")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public AlertObject alertsByDateRange(@NotNull @Valid @QueryParam("startDate") ZonedDateTime startDate,
                                                 @NotNull @Valid @QueryParam("endDate") ZonedDateTime endDate) { ... }

我在网上查看了一下,但我找不到一组好的例子,说明如何在swagger for java中正确设置所需参数,也找不到一个描述java版本细微差别的API。

所以我的问题是——如何正确设置所需的参数,以便它们仍然可以通过昂首阔步的用户界面执行?

共有1个答案

澹台景山
2023-03-14

我想出了问题。

如果您注意到在上面的代码中,我在swagger中声明了相同的参数两次。第一次是:

@Parameter(name = "startDate",
                    in = ParameterIn.QUERY,
                    description = "Get alerts from this date. `startDate` should be in GMT and 24 hour Clock",
                    example = "2020-07-15T15:57:00Z",
                    schema = @Schema(implementation = ZonedDateTime.class),
                    required = true),

第二次是:

@NotNull @Valid @QueryParam("startDate") ZonedDateTime startDate,

当我看着山药时,我看到了这个:

 parameters:
  - name: startDate
    in: query
    description: Get historical alerts from this date. `startDate` should be in
      GMT and 24 hour Clock
    required: true
    schema:
      type: string
      format: date-time
    example: 2020-07-15T15:57:00Z
  ...
  - name: startDate
    in: query
    required: true
    schema:
      type: string
      format: date-time

结果,该参数出现两次。你可以分辨哪个是哪个,因为第一个参数有描述,第二个没有。

(我认为根本的问题是,两者都被认为是必需的,但我们只能填写1个参数。)

一旦我删除了第二个声明,我就可以使用swagger来测试我的API调用。

 类似资料:
  • 我对使用Selenium是新手,在Selenium Grid 2中使用RemoteWebDriver时遇到了一些问题。我想知道我的代码出了什么问题。谢谢 我分3步设置RemoteWebDriver: > 将Chrome驱动程序设置为系统属性,我检查了路径是否正确 设置功能 通过RemoteWebDriver打开驱动程序 结果通过前两步,但在最后一步失败,因为日志没有显示。似乎在设置RemoteWe

  • 我最近在论坛上问了一个问题,为什么ExecutorService在获得期货后阻止了我的程序:ExecutorService和Future阻止了主线程 问题是,经过大量的调试,有罪的线不是未来。get()但是

  • 在我的Espresso测试执行和AlertDialog会被提示并等待用户响应。Espresso测试只有在我按下“Accept”按钮但我想测试代替用户执行此事件时才会继续。 我注意到我的线程选项卡上有以下状态

  • 我正在使用jQuery FormBuilder插件。链接:http://formbuilder.readthedocs.io/en/latest/.现在,当用户提交表单时,我想确保所有必需的字段(带*)都已填写完毕,否则表单将无法提交(我会收到一条错误消息'一个无效的表单控件,名称='xxx'是不可聚焦的。')。表单中有许多类型的输入,包括文本、文本区域、下拉选择、单选和复选框等。我如何验证所有这

  • 问题内容: 当try块中存在时,我对try- finally执行感到困惑。据我了解,finally块将始终执行,即在返回调用方法之前。在考虑以下简单代码时: 实际打印的结果为1。这是否意味着不执行finally块?有人可以帮我吗? 问题答案: 从块返回时,返回值存储在该方法的堆栈帧中。之后,将执行finally块。 更改finally块中的值不会更改堆栈中已存在的值。但是,如果您从finally块

  • 我在Spring Boot应用程序中有以下类: 当我通过GET请求调用它时,我得到一个200 OK的回复,其中包含BBC的HTML源代码。co.uk公司。因此,似乎正在遵循重定向。 根据HTTP规范第10.3.3节: 如果收到302状态码以响应GET或HEAD以外的请求,则除非用户能够确认,否则用户代理不得自动重定向该请求 此外,它还专门针对非GET响应,并不规定GET请求应该重定向。因此,尽管在