2014-11-08 38 views
6

'daki başka bir model tanımının kimliğine başvurma Kullanıcı ve Kullanıcı Türü modelim olduğunu varsayalım. Kullanıcı modelindeki UserType-ID'ye bir referans eklemek istiyorum. Swagger dokümantasyonu sadece, sadece bir özellik değil, başka bir modele nasıl referans gösterileceğini gösterir.Swagger

Bu yüzden sadece başka bir model tanımına atıfta bulunmanın bile mümkün olduğunu merak ettim.

"definitions": { 
    "User": { 
     "required": [ 
      "username", 
      "typeId" 
     ], 
     "properties": { 
      "id": { 
       "type": "integer", 
       "format": "int32" 
      }, 
      "username": { 
       "type": "string" 
      }, 
      "typeId": { 
       "$ref": "UserType.id" // ==> this doesn't work! and without 
             // the ".id" part it would include all 
             // the properties of UserType 
      } 
     } 
    }, 
    "UserType": { 
     "required": [ 
      "name" 
     ], 
     "properties": { 
      "id": { 
       "type": "integer", 
       "format": "int32" 
      }, 
      "name": { 
       "type": "string" 
      } 
     } 
    } 
} 

Yoksa en iyisi bu mümkün değildir ve her zaman sadece olmalıdır: Swagger 2.0'da

"definitions": { 
    "User": { 
     ... 
     "properties": { 
      "typeId": { 
       "type": "integer", 
       "format": "int32" 
      } 
     } 
    }, 
    ... 
} 
+0

Cevaba girmeden önce neden bir * ilkel * tanımına başvurmak istiyorsunuz? Bu sana ne yazıyor? – Ron

+0

Sanırım "bağlantılı" Modeli görmek için REST belgelerini okuyan herkes için daha net olacağını düşünüyorum. – roberkules

+0

Ve UserType.id türünü değiştirmem gerekirse, tüm referansları güncellemem gerekmeyecek. – roberkules

cevap

6

, Şema nesneleri gerekli (önceki sürümlerinde model nesne aksine) modellerini açıklayan yok. Örneğin, "vücut" parametrelerine bakarsanız, bir Şema türünü tanımlamanız gerektiğini görürsünüz, ancak bu şema ayrıca ilkel ve dizileri de temsil edebilir. , Onun tanımını değiştirmek istediğiniz yapabilirsiniz TypeId şimdi dışlanma

"defintions": { 
    "User": { 
    "required": [ 
     "username", 
     "typeId" 
    ], 
    "properties": { 
     "id": { 
     "type": "integer", 
     "format": "int32" 
     }, 
     "username": { 
     "type": "string" 
     }, 
     "typeId": { 
     "$ref": "#/definitions/TypeId" 
     } 
    } 
    }, 
    "UserType": { 
    "required": [ 
     "name" 
    ], 
    "properties": { 
     "id": { 
     "$ref": "#/definitions/TypeId" 
     }, 
     "name": { 
     "type": "string" 
     } 
    } 
    }, 
    "TypeId": { 
    "type": "integer", 
    "format": "int32" 
    } 
} 

ve zaman gelmeli ve: Yukarıdaki soruya (ve yorumlar), ben aşağıdaki yapıyı kullanarak öneririm için

tek bir yerde değiştirin. Tabii ki, daha iyi belgelemek için alanlara ve modellere ek "description" eklemek isteyebilirsiniz.

+1

Evet, şu an gitmek için bir yol. Ne yazık ki şemaya dayalı bir veritabanı oluşturmak için yararlı olabilecek bazı verileri kaybeder. –

+0

Bununla ilgili yanlış bir şey yok. Bu bir API dokümantasyon aracıdır ve bir uygulama/veritabanı değildir. Bir API temsilinden veritabanı temsiline yansıtmak, temelde yanlış olmamaktan daha sıktır. – Ron

+0

hala geçerli mi? – Yerken