如何在OpenAPI / Swagger中使用对象键描述地图?

时间:2018-06-29 07:21:20

标签: swagger openapi

在我的REST API中,我想使用哈希图Map<Foo, List<Bar>>,其中FooBar是用户定义的类。如何在OpenAPI(Swagger)中描述这样的地图?

2 个答案:

答案 0 :(得分:0)

OpenAPI(Swagger)仅支持带有字符串键的映射,例如:

{
  "en":  "Hello",
  "fr":  "Bonjour"

   ^^ key is a string
}

无法使用非字符串键(例如Map<Foo, Bar>)定义映射。您可以在OpenAPI规范存储库中提交功能请求:https://github.com/OAI/OpenAPI-Specification/issues

您最能做的就是将哈希映射定义为type: object,这意味着一个任意对象。

答案 1 :(得分:0)

您可以使用additionalProperties
执行此操作 参见docs

components:
  schemas:
    Messages:        # <---- map
      type: object
      additionalProperties:
        type: string

它在json中表示为:

{
  "Alex":  "Hello",
  "Ann":  "Hi!"

   ^^ key is a string
}