【问题标题】:Swagger POST generated parameter body overrideSwagger POST 生成的参数正文覆盖
【发布时间】:2019-03-12 15:21:11
【问题描述】:

我有一个示例对象,被 swagger 引用以在我的文档中创建一个 POST 端点。

然后我使用文档生成客户端进行测试。但是,API 的工作方式与直接呈现对象的方式略有不同。我想将文档中创建的模型的 POST 正文参数类型从服务类型覆盖为字符串(服务的引用字符串)。我在下面包含了引用的对象。

@Entity
public class ServiceType {

    private String id;
    private Service service;
    private String type;

    public Service getService() {
        return service;
    }

    public void setService(Service service) {
        this.service = service;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
}

正文生成为:

{
  "createdDate": "2019-03-12T15:18:22.568Z",
  "id": "string",
  "service": {
    "createdDate": "2019-03-12T15:18:22.568Z",
    "id": "string",
    "name": "string",
    "routingKey": "string",
    "updatedBy": "string",
    "updatedDate": "2019-03-12T15:18:22.569Z"
  },
  "type": "string",
  "updatedBy": "string",
  "updatedDate": "2019-03-12T15:18:22.569Z"
}

但我希望它采用以下格式:

{
  "createdDate": "2019-03-12T15:18:22.568Z",
  "id": "string",
  "service": "string",
  "type": "string",
  "updatedBy": "string",
  "updatedDate": "2019-03-12T15:18:22.569Z"
}

不确定这是否可能。感谢您的帮助。

【问题讨论】:

    标签: java swagger swagger-2.0


    【解决方案1】:

    您可以使用@ApiModel@ApiModelProperty 注释来覆盖字段的默认数据类型。请注意,数据类型必须是完全限定的类型名称(例如java.lang.String)。如需更多信息,请参阅Overriding Property Datatypes

    @Entity
    @ApiModel
    public class ServiceType {
    
        private String id;
    
        @ApiModelProperty(dataType = "java.lang.String")
        private Service service;
        private String type;
    
        public Service getService() {
            return service;
        }
    
        public void setService(Service service) {
            this.service = service;
        }
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getType() {
            return type;
        }
    
        public void setType(String type) {
            this.type = type;
        }
    }
    

    【讨论】:

    • 我是否需要对我的 swagger 配置类做任何事情来启用属性类型的应用程序?当我进行更改时,文档由于某种原因保持不变。感谢您的帮助。
    • @jkollin 尝试使用 java.lang.String 而不是 string 作为数据类型。数据类型覆盖必须是完全限定的。有关详细信息,请参阅springfox.github.io/springfox/docs/current/…。 (我已经更新了上面的答案。)
    • 是的,做到了!谢谢
    猜你喜欢
    • 2016-04-09
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    相关资源
    最近更新 更多