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

为Java LocalDateTime生成正确的swagger规范

和光启
2023-03-14

我试图在spring boot应用程序中使用swagger注释从Java代码中获取swagger规范(yaml)。我对模型进行注释,然后运行springboot应用程序,然后从http://localhost:8080/v2/api-文档。

我的模型如下所示:

package com.indiana.core;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;

import io.swagger.annotations.ApiModelProperty;

@lombok.ToString
@lombok.Getter
@lombok.Setter
public class SampleClass{

        @JsonProperty(value = "birth_date_time")
    private LocalDateTime birthDateTime;
....
}'

我想为此创建正确的swagger yaml斑点。当我访问自动提供yaml的swagger UI时,我期待下面的内容。

注意dateOfBirth是一个Java 8 LocalDateTime类(https://swagger.io/specification/查找数据类型部分)yaml中的日期应为类型:“string”,格式为:Date-time。

 'SampleClass:
    properties:
      dateOfBirth:
        type: string
        format: date-time'

我现在得到的是:

看起来swagger正在构建一个详细的定义LocalDateTime,这不是我要找的。

'"definitions": {
        "LocalDateTime": {
            "type": "object",
            "properties": {
                "chronology": {
                    "$ref": "#/definitions/Chronology"
                },
                "dayOfMonth": {
                    "type": "integer",
                    "format": "int32"
                },
                "dayOfWeek": {
                    "type": "string",
                    "enum": ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]
                },
                "dayOfYear": {
                    "type": "integer",
                    "format": "int32"
                },
                "hour": {
                    "type": "integer",
                    "format": "int32"
                },
                "minute": {
                    "type": "integer",
                    "format": "int32"
                },
                "month": {
                    "type": "string",
                    "enum": ["JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE", "JULY", "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER"]
                },
                "monthValue": {
                    "type": "integer",
                    "format": "int32"
                },
                "nano": {
                    "type": "integer",
                    "format": "int32"
                },
                "second": {
                    "type": "integer",
                    "format": "int32"
                },
                "year": {
                    "type": "integer",
                    "format": "int32"
                }
            }
        },

我试过了

'A. @ApiModelProperty(dataType = "java.lang.String", example = "17-03-2019 22:18:59", notes = "Birthdaytime desc")
B. @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MM-dd-yyyy hh:mm:ss")'

对于A,元素仅在yaml中定义为字符串,缺少“form: date-time”,如下所示。

 SampleClass:
    properties:
      dateOfBirth:
        type: string

需要做什么调整才能创建一个完美的swegger?我需要这个

 SampleClass:
    properties:
      dateOfBirth:
        type: string
        format: date-time .

共有1个答案

终安和
2023-03-14

只需在LocalDateTime字段上添加以下注释,以在swagger定义中格式化datetime:

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = Shape.STRING)
@ApiModelProperty(required = true, example = "2021-08-20T00:00:00")
 类似资料:
  • Springfox昂首阔步的用户界面有错误的基本网址。我不清楚19080端口从哪里来,因为没有服务监听该端口。我需要做什么设置才能让springfox生成正确的基本网址? Swagger UI http://dev.example.com/newapi/swagger-ui.html 错误的基本URL 基本URL:dev.example。com:19080/newapi 正确的基本URL 基本UR

  • 我试图解析下面的processingdate,以便最终得到格式为2020-11-10T10:43:07 00:00的日期。我如何修改以下内容以产生此结果?

  • 我正在尝试使用Swagger代码生成器生成一个SpringBoot项目。我使用以下命令: 问题:所有类都正确生成,但配置类除外。它们被放入<code>io.swagger。configuration</code>包而不是我自己的包。 问题:如何使swagger生成一个合适的包的配置类?

  • 我有一个OpenAPI规范,我使用了来生成Golang服务器。 从OpenAPI规范生成Swagger documentation server的常规方法是什么? 我已经尝试过swag:它会在http://localhost:8080/swagger/index.html终点。但这需要在代码注释中描述API。我正在寻找一个来自OpenAPI规范的大摇大摆的UI生成器,我已经有了。 谢谢

  • 我有一个复合密钥的实体。订阅和源具有多对多的关系。 我正在使用Spring数据存储库来处理它。 当我尝试使用方法saveAll时,它会抛出 “com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexception:未知列'subscripti0_.subscription_id'” 同时尝试在保存后返回值。 Hibernate生成以下查询: 所以,现在我

  • 我正在创建一个允许下载zip文件的api,因此为此,我正在寻找正确的媒体类型,以便在swagger“2.0”规范中发送此zip文件作为响应。 我当前的api规范如下所示 我已经用“go-swagger”编译了这个规范并为此实现了后端,但是当尝试调用这个API时,我得到了这个错误 在swagger的文档中,我没有看到这种媒体类型 官方招摇的媒体类型 那么,如果我们想提供一个API来下载zip文件,那