2

私はswagger仕様を作成しました

/config/download:
 post:
  summary: Download config
  consumes:
    - application/json
  produces:
    - application/zip
  parameters:
    - in: body
      name: config
      schema:
        type: array
        items:
          title: config files
          description: All config file name that need to be downloaded
          type: string
        minItems: 0
        maxItems: 1024
  responses:
    200:
      description: 
      schema:
        type: string
        format: binary

私はgo-swaggerでこのswagger仕様をコンパイルしており、これにもバックエンドを実装しています

しかし、このリクエストをカールしようとすると、

 curl -i  http://127.0.0.1:<port>/config/download -X "POST" -d '{"config": ["config1.json", "config.json"]}' -H "Content-Type: application/json"
HTTP/1.1 400 Bad Request
Content-Type: application/json
Date: Tue, 02 Feb 2021 07:36:06 GMT
Content-Length: 132
Connection: close

{"code":400,"message":"parsing config body from \"\" failed, because json: cannot unmarshal object into Go value of type []string"}

curl に問題はないと思いますが、swagger 仕様も正しいようです。サーバーがこのリクエストを正しく処理しておらず、バックエンドの実装コードに到達していないことは、curl エラー メッセージから明らかです。

どんな提案でも大歓迎です。

4

2 に答える 2

3

次のようなリクエストボディパラメータの新しい定義を作成する必要があります

config:
    title: config names
    properties:
      configs:
        title: config names
        description: List of config files to download.
        type: array
        items:
          title: Config
          type: string
        minItems: 0
        maxItems: 1024

そして、swagger仕様は次のようになります

       parameters:
        - in: body
          name: config
          schema:
            type: object
            $ref: '#/definitions/config'

于 2021-02-02T15:53:19.027 に答える