提问者:小点点

Swagger-试图使用包含数组的对象参数的用户界面问题


似乎几乎拥有它…

尝试让swagger在请求正文中发送参数的匿名散列。

我有一个匿名哈希,其中包含一个名为list的键,该键包含一个数组。

尝试发送此参数(text/json):

{
    list : [ 'string1', 'string2' ]
}

Swagger正在构建正确的curl语句,但没有通过UI发送参数。

Swagger构建它(从命令行工作):

/usr/bin/curl -H 'Content-Type: text/json' -X GET -d '{ "list" : [ "text:/export/home/ihome/perl5/our_modules/check_parse_lib_rest/t/data/hosts:/export/home/ihome/perl5/our_modules/check_parse_lib_rest/t/data/hosts", "text:/export/home/ihome/perl5/our_modules/check_parse_lib_rest/t/data/hosts:/export/home/ihome/perl5/our_modules/check_parse_lib_rest/t/data/hosts.1" ] }' 'https://localhost.localdomain:9086/library/check_diff_batch'

但是Swagger-用户界面没有显示模型示例,也没有在请求主体中发送参数。

在编辑器中,我看到列表显示为未定义。

Schema
 ⇄  
Comparison {
list:
ComparisonList undefined *
} 

定义-

paths:
  /check_diff_batch:
    get:
      summary: Compare a list of file comparrison objects using diff.
      description: |
        FIXME: Takes an array of colon delimited comparrison objects.
        Required parameter Comparrison object format = type:file1:file2
        **RC** will return false if there are differences or a failure.
        **FAULT_MSG** will return No Faults or a failure message.
      parameters:
         - $ref: "#/parameters/ComparrisonList"
      responses:
        200:
          description: Successful response
          examples:
            text/json:
                ...

parameters:
    ComparrisonList:
      name: list
      in: body
      description: List of comparrison objects
      schema:
        $ref: "#/definitions/Comparisons"

definitions:
  Comparisons:
    required:
      - list
    properties:
      list:
        $ref: "#/definitions/ComparisonList"

  ComparisonList:
    additionalProperties:
      type: string

共1个答案

匿名用户

addtionalProperties用于定义关联数组/hashmap,而不是常规数组。常规字符串数组定义为:

definitions:
  ComparisonList:
    type: array
    items:
      type: string

您还应该使用post操作,而不是get,因为GET中的请求体没有按照RFC7231第4.3.1节定义语义学。