我有一個API,我發佈了一組對象到服務器,按類型區分,其中每個類型都有一些不同的參數。這些命令結構如下所示:如何指定對象的類型是幾種可能的對象類型之一?
{
"type": <command-name>,
"args": {
<command-specific args>
}
}
例如,這些可能是兩種可能的命令:
{
"type": "Flooblinate",
"args": {
"intensity": "High",
"frequency": "Every blue moon"
}
}
{
"type": "Blagostrate",
"args": {
"temperature": 34.5,
"darkMatter": true
}
}
我怎樣才能在揚鞭指定此?我可以指定enum
爲"type"
,但我怎麼說「"args"
是這些可能的對象之一」?
我已經簽出the docs但沒有什麼突出的。最有前途的一個是allOf
,因爲它在編輯器中顯示的很好(pastebin,粘貼到online editor):
definitions:
Product:
type: object
allOf:
- type: object
title: Flooblinate
properties:
intensity:
type: string
frequency:
type: string
- type: object
title: Blagostrate
properties:
temperature:
type: number
darkMatter:
type: boolean
,看起來像這樣:
然而,這不是語義我所需要的,並且毫不奇怪,在online viewer(那個沒有爲我的測試案例設置,不知道如何很容易地連接本地文件的情況下),它們被呈現爲好像所有的字段同時出現,當然是什麼allOf
mea NS:
做什麼用揚鞭代表這個正確的方法是什麼?
我在這裏看到的問題是鑑別器:類型必須匹配每個產品子對象的名稱。您需要讓產品擁有一個「類型」字段,其中的值與子對象的名稱緊密結合[Flooblinate,Blagostrate],並且如果命名有變化,則會突然出現這種情況。你看到了解決辦法嗎? –