Ne kadar basit nesnelerle bir dizi için Swagger bir model tanımlamak için?

oy
32

Bazılarının gibi basit diziyi kabul eder belgelemek için REST servisleri vardır:

[
  { name:a },
  { name:b },
  { name:c }
]

Nasıl Swagger modeli bölümünde bu tarif edersiniz? Ben sadece 'adlı diziyi' gibi oluşturabilir

model {
properties: { arr: { type:array, ......

ama böyle verileri açıklamaktadır:

arr: [
  { name:a },
  { name:b },
  { name:c }
]
Oluştur 25/10/2013 saat 08:05
kaynak kullanıcı
Diğer dillerde...                            


7 cevaplar

oy
-2

Benim anlayış doğru ise, ben şu istediğini may düşünüyorum.

Bahsettiğin gibi,

bazıları basit dizisi kabul

Sonra bir parametre geçirilir olacaktır.

"parameters" : [{
  "name" : "param_name",
  "type" : "array",
  "items" : {
    "$ref" : "M"
  }
  ...
}]
...

Model bölümü için:

"models" : {
  "M": {
    "id" : "M",
    "properties": {
       "name" : {
         "type" : "string"
       }
    }
  }
Cevap 29/11/2013 saat 06:09
kaynak kullanıcı

oy
7

Muhtemelen şöyle görünür:

    ...
    "parameters" : [{
      "name" : "whatEverThatArrayCalled",
      "type" : "array",
      "items" : {
        "$ref" : "whatEverThatArrayCalled"
      }
      ...
    }],
    "models" : {
   {
    "id" : "whatEverThatArrayCalled",
    "properties": 
        {
       "whatEverThatArrayCalled" :
            {
         "type" : "array",
         "items":{"name":"a",
                  "name":"b",
                  "name":"c"
                  },

             }
         }
    }
 }        

...

Cevap 27/07/2015 saat 21:56
kaynak kullanıcı

oy
2

Ben editor.swagger.io follwoing, bu soruya ve eserlerin taleplerini karşılamakta çalıştı. POST talebi gövdesi bir dizi mi. Dizi 'stackoverflow' maddeden oluşmaktadır. Her öğe adı özelliğine sahip bir nesnedir.

paths:
  /test:
    post:
      summary: test 123
      description: test 123
      parameters:
        - name: param1
          in: body
          required: true
          description: test param1
          schema:
            type: array
            items:
              $ref: '#/definitions/stackoverflow'
      responses:
        200:
          description: OK
definitions:
  stackoverflow:
    type: object
    properties:
      name:
        type: string
        description: name of the object
Cevap 06/10/2016 saat 00:56
kaynak kullanıcı

oy
8

Tony YUEN yakın, ama hiçbir puro. Bu OpenAPI / Swagger içinde YAML kullanarak uygun tanımı şöyledir:

  /test:
post:
  summary: test 123
  description: test 123
  parameters:
    - name: param1
      in: body
      required: true
      description: test param1
      schema:
          $ref: '#/definitions/stackoverflow'
  responses:
    200:
      description: OK

Bu üretir:

stackoverflow2[
  {
     name: string
  }
]

Tony'nin örnek üretir:

[
  stackoverflow { 
                 name: string
  }
]

YAML olarak komple Swagger / OpenAPI (kopyalama ve yapıştırma)

    swagger: '2.0'

################################################################################
#                              API Information                                 #
################################################################################
info:
  version: "Two-point-Oh!"
  title: Simple objects in array test
  description: |
    Simple objects in array test

################################################################################
#                                   Parameters                                 #
################################################################################

paths:
  /test:
    post:
      summary: Array with named objects
      description: Array with named objects
      parameters:
        - name: param1
          in: body
          required: true
          description: test param1
          schema:
            type: array
            items:
              $ref: '#/definitions/stackoverflow'
      responses:
        200:
          description: OK
  /test2:
    post:
      summary: Array with simpel (nameless) objects
      description: Array with simpel (nameless)  objects
      parameters:
        - name: param1
          in: body
          required: true
          description: test param1
          schema:
              $ref: '#/definitions/stackoverflow2'
      responses:
        200:
          description: OK
definitions:
  stackoverflow:
    type: object
    properties:
      name:
        type: string
        description: name of the object
  stackoverflow2:
    type: array
    items:
      type: object
      properties:
        name:
          type: string
          description: name of the object

İşte Swagger / OpenAPI JSON versiyonu

    {
  "swagger" : "2.0",
  "info" : {
    "description" : "Simple objects in array test\n",
    "version" : "Two-point-Oh!",
    "title" : "Simple objects in array test"
  },
  "paths" : {
    "/test" : {
      "post" : {
        "summary" : "Array with named objects",
        "description" : "Array with named objects",
        "parameters" : [ {
          "in" : "body",
          "name" : "param1",
          "description" : "test param1",
          "required" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/definitions/stackoverflow"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK"
          }
        }
      }
    },
    "/test2" : {
      "post" : {
        "summary" : "Array with simpel (nameless) objects",
        "description" : "Array with simpel (nameless)  objects",
        "parameters" : [ {
          "in" : "body",
          "name" : "param1",
          "description" : "test param1",
          "required" : true,
          "schema" : {
            "$ref" : "#/definitions/stackoverflow2"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK"
          }
        }
      }
    }
  },
  "definitions" : {
    "stackoverflow" : {
      "type" : "object",
      "properties" : {
        "name" : {
          "type" : "string",
          "description" : "name of the object"
        }
      }
    },
    "stackoverflow2" : {
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/stackoverflow2_inner"
      }
    },
    "stackoverflow2_inner" : {
      "properties" : {
        "name" : {
          "type" : "string",
          "description" : "name of the object"
        }
      }
    }
  }
}
Cevap 14/11/2016 saat 09:04
kaynak kullanıcı

oy
3

Bu yapıştır http://editor.swagger.io/#/ ve "bu işlemi deneyin" seçeneğini tıklayın

{
  "swagger": "2.0",
  "info": {
    "version": "1.0.0",
    "title": "Privacy-Service API"
  },
  "paths": {
    "/allNames": {
      "post": {
        "consumes": [
          "application/json",
          "application/xml"
        ],
        "produces": [
          "application/json",
          "application/xml"
        ],
        "parameters": [
          {
            "name": "request",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/ArrayOfNames"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of names",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        }
      }
    }
  },
  "definitions": {
    "ArrayOfNames": {
      "type": "array",
      "items": {
        "minItems": 1,
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string"
          }
        }
      }
    }
  }
}
Cevap 21/12/2016 saat 19:20
kaynak kullanıcı

oy
1
  parameters:
  - name: "items"
    in: "formData"
    description: "description"
    required: "true"
    type: "array"
    items:
      type: "object"
      additionalProperties:
        properties:
          name:
            type: "string"

Onların Docs göre https://swagger.io/docs/specification/data-models/dictionaries/ , bu ad ve veri türü olarak adlandırılan bir özellik dizesi var nesnelerle bir dizi yol açmalıdır.
Bu istekler vücut üzerinde böyle bir şey erişilebilirrequest.body.items

Güncelleştirme:

o (additionalproperties olmadan) yapmak için yeterli olması gibi görünüyor:

items:
  type: object
  properties:
    name:
      type: string

Artık her bir anahtar olarak adlandırılan adı ve karşılık gelen bir değer öğeleri var.

o İÇİN soran ne bu ise ....

Cevap 22/01/2018 saat 12:44
kaynak kullanıcı

oy
-1

Bahsettiğiniz dizinin formatı dikkate alındığında

[
  { "name":"a" },
  { "name":"b" },
  { "name":"c" }
]

Aşağıdaki biçimi kullanılabilir tahmin:

paths:
  /test:
    post:
      description: Test request
      operationId: test
      parameters:
        - in: body
          name: requestParameter
          required: true
          schema:
            type: array
            items:
              properties:
                name:
                  type: string
      responses:
        '200':
          description: Success response
Cevap 09/04/2018 saat 09:05
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more