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

如何使用springdoc for swagger open api 3.0生成Map类型的RequestBody?

澹台镜
2023-03-14
public Item addProperties(
        @Parameter(description = "identifier of the item")
        @PathVariable("id") String id,
        @Parameter(description = "map of property names and values ", 
                content = @Content(schema = @Schema(type = "object", implementation = Map.class)))
        @RequestBody Map<String, Object> properties) 

对于上面的代码,只生成参数id,并且它完全缺少requestBody。我添加了type=“object”基于https://swagger.io/docs/specification/data-models/dictionaries/ .

共有1个答案

詹唯
2023-03-14

RequestBody类型必须是类。所以Map的任何实现都可以工作(即HashMap)

@RequestBody HashMap<String, Object> properties
 类似资料:
  • 在我的项目中,有两个和一些: 我得到的结果和错误如下: 生成的如下: 我认为和没有正确生成,因为它们是字符串类型,没有引号。 我不知道为什么它会以这种方式产生。请告诉我如何解决这个问题。

  • 我正在使用openapi生成器生成typescript获取。我喜欢使用openapi生成器,因为它支持DTO作为查询参数,如果我有10个这样的查询参数,则会将方法生成为RequestDto。这太棒了,想象一下有10个参数并排作为方法输入,噩梦。无论如何,这很好,但当你这样使用它时: java-jar-openapi-generator-cli-4.0.3。jar生成-i/swagger-spec.

  • OpenAPI3.0规范规定,没有任何类型的模式将匹配任何数据类型。 没有类型的模式匹配任何数据类型--数字、字符串、对象等等。 因此,对此进行建模的正确方法是下面的Swagger定义,其中没有属性: 但是,每个开放问题Swagger-core#3834,Java值都映射到OpenAPI类型,而不是任意类型。如上所述,这意味着这样的API返回或接受不是OpenAPI的类型是不正确的,例如、、等。

  • 我使用的是Fast erxml json框架2.2.0版,以便在我正在开发的应用程序的API的json中创建模式。 我的API类似于:https://gist.github.com/nemo83/5555249 客户和订单都引用了地址。现在,当我尝试生成架构(https://github.com/FasterXML/jackson-module-jsonSchema)时,结果是: {"type":

  • 我在父类和子类中都有构建器。父对象有一个抽象生成器和一个扩展抽象生成器的具体生成器。子级有一个扩展父级抽象生成器的抽象生成器和一个扩展子级抽象生成器的具体生成器。原因是父级的setter返回当前的Builder类。我有一些方法返回类自己的抽象构建器类型,我想将其称为父抽象类型(调用它的父方法)。我所能做的就是

  • 我想在Kotlin中为具有不可变属性的类型使用类型安全生成器。 我想到了两种解决方案: 选项 1:创建生成器类: 选项2:创建自定义委托以防止再次设置该值: 选项1的缺点是我必须维护两个类,选项2的缺点是编译器将允许再次设置< code>DataClass中的值,并且检查将只在运行时进行。 有没有更好的方法来解决这个问题而没有提到的缺点?