我被要求使用Swagger描述API,但在处理更复杂的情况时遇到了困难。想象一下你正在发布带有多个订单项目的订单。
<upload_order>
<token>d6a91238b0f17b49d49fbdcbba773d71</token>
<order>
<order_id>10006</order_id>
<item_value>48.50</item_value>
<postage_value>5.00</postage_value>
<gross_value>A43.50</gross_value>
<discount_value>10.00</discount_value>
<delivery_date>2016-10-32</delivery_date>
<customer_name>Tom H</customer_name>
<business_name>Toysorry</business_name>
<address_line_1>Adderss Line 1</address_line_1>
<address_line_2>Adderss Line 1</address_line_2>
<town>Town</town>
<county>County</county>
<postcode>PO123ST</postcode>
<email>email@email.com</email>
<telephone>0787878787878</telephone>
<delivery_instructions>Garage</delivery_instructions>
<delivery_method>PRE12</delivery_method>
<items>
<item>
<id>1</id>
<sku>BLABLA</sku>
<qty>A</qty>
<product_name>A Product</product_name>
<unit_price>1.50</unit_price>
</item>
<item>
<id>2</id>
<sku>HAHAHA</sku>
<qty>2</qty>
<product_name>WINTER BUNDLE</product_name>
<unit_price>22.00</unit_price>
</item>
</items>
</order>
如何在Swagger中描述它,因为以这种方式使用数组似乎不起作用。
/upload_order:
post:
description: create order
operationId: upload_order
produces:
- application/xml
parameters:
- name: upload_order
in: body
description: upload order
required: true
schema:
$ref: '#/definitions/newOrder'
responses:
'200':
description: response
schema:
$ref: '#/definitions/token_response'
default:
description: unexpected error
schema:
$ref: '#/definitions/errorModel'
newOrder:
type: object
required:
- token
- order_id
- item_value
- postage_value
- gross_value
- discount_value
- delivery_date
- customer_name
- business_name
- address_line_1
- address_line_2
- town
- county
- postcode
- email
- telephone
- delivery_instructions
- delivery_method
- items
properties:
token:
type: string
order_id:
type: string
item_value:
type: number
format: float
postage_value:
type: number
format: float
gross_value:
type: number
format: float
discount_value:
type: number
format: float
delivery_date:
type: string
format: date
customer_name:
type: string
business_name:
type: string
address_line_1:
type: string
address_line_2:
type: string
town:
type: string
county:
type: string
postcode:
type: string
email:
type: string
telephone:
type: string
delivery_instructions:
type: string
delivery_method:
type: string
items:
$ref: '#/definitions/itemsArray'
itemsArray:
type: array
required: item
item:
$ref: '#/definitions/item'
item:
required:
- id
- sku
- qty
- product_name
- unit_price
type: object
properties:
id:
type: string
sku:
type: string
qty:
type: integer
format: int32
product_name:
type: string
unit_price:
type: number
format: float
请救救我
谢谢
更新 - 几天后我根据全宠物店标记学习之后理解了,忘记发布答案了,对一些人来说很简单的点
paths:
/upload_order:
post:
description: create order
operationId: upload_order
parameters:
- name: upload_order
in: body
description: upload order
required: true
schema:
$ref: '#/definitions/uploadOrder'
responses:
'200':
description: response
schema:
$ref: '#/definitions/upload_response'
default:
description: unexpected error
schema:
$ref: '#/definitions/errorModel'
definitions:
uploadOrder:
type: object
required:
- upload_order
properties:
upload_order:
$ref: '#/definitions/uploadOrderData'
uploadOrderData:
type: object
required:
- login
- order
properties:
login:
$ref: '#/definitions/login'
order:
$ref: '#/definitions/order'
order:
type: object
required:
- order_id
- address_line_2
- items
properties:
order_id:
type: string
item_value:
type: string
pattern: '^(\d{1,100}\.\d{2})$'
default: '0.00'
postage_value:
type: string
pattern: '^(\d{1,100}\.\d{2})$'
default: '0.00'
gross_value:
type: string
pattern: '^(\d{1,100}\.\d{2})$'
default: '0.00'
discount_value:
type: string
pattern: '^(\d{1,100}\.\d{2})$'
default: '0.00'
delivery_date:
type: string
format: date
customer_name:
type: string
business_name:
type: string
address_line_1:
type: string
address_line_2:
type: string
town:
type: string
county:
type: string
postcode:
type: string
email:
type: string
telephone:
type: string
delivery_instructions:
type: string
delivery_method:
type: string
items:
$ref: '#/definitions/orderItems'
orderItems:
type: array
required:
- item
properties:
item:
$ref: '#/definitions/orderItem'
items:
$ref: '#/definitions/orderItem'
orderItem:
required:
- id
- sku
- qty
- product_name
- unit_price
type: object
properties:
id:
type: string
sku:
type: string
qty:
type: integer
format: int32
product_name:
type: string
unit_price:
type: string
pattern: '^(\d{1,100}\.\d{2})$'
default: '0.00'
login:
type: object
required:
- login
properties:
login:
$ref: '#/definitions/login_data'
login_data:
type: object
required:
- username
- password
- channel_code
properties:
username:
type: string
password:
type: string
channel_code:
type: string
upload_response:
type: object
properties:
response:
$ref: '#/definitions/upload_response_data'
upload_response_data:
type: object
required:
- messages
- success
properties:
messages:
$ref: '#/definitions/messages'
success:
type: string
errorModel:
type: object
required:
- messages
properties:
messages:
$ref: '#/definitions/messages'
messages:
type: array
required:
- message
properties:
message:
$ref: '#/definitions/message'
items:
$ref: '#/definitions/message'
message:
type: string