Modeller bölümünde HashMap veya Genel Nesne türü tanımlamanın bir yolu var mı? Ürünleri iade eden bir REST hizmetim var ve bu ürünler farklı seçeneklere sahip olabilir. Options özelliği temelde bir HashMap'dir, burada id seçenek seçeneğidir ve değeri seçenek değeridir.Swagger HashMap özellik türü
cevap
Evet, mümkün.
- anahtar her zaman bir dizedir ve tanımlanması gerekmez: OpenAPI yılında
(. Fka Swagger) 2.0 ve 3.0, bir HashMap daima
<string, something>
haritasıdır. - Değer türü, istediğiniz ve
additionalProperties
ile tanımlanmıştır.{ "key1": "value1", "key2": "value2" }
gelen OpenAPI 2.0 tanım olacaktır:
definitions: StringStringMap: type: object additionalProperties: type: string
OpenAPI 3.0'da tanım olacaktır:
Diyelim ki böyle bir <string, string>
hashmap tarif etmek istediğimizi varsayalım
components:
schemas:
StringStringMap:
type: object
additionalProperties:
type: string
01 Bu
{
"key1": {"someData": "data", "someOtherData": true},
"key2": {"someData": "data2", "someOtherData": false}
}
gibi bir <string, object>
HashMap OpenAPI 2.0'da bu şekilde tanımlanacak:
definitions:
ComplexObject:
type: object
properties:
someData:
type: string
someOtherData:
type: boolean
StringObjectMap:
type: object
additionalProperties:
$ref: "#/definitions/ComplexObject"
ve OpenAPI içinde 3.0:
components:
schemas:
ComplexObject:
type: object
properties:
someData:
type: string
someOtherData:
type: boolean
StringObjectMap:
type: object
additionalProperties:
$ref: "#/definitions/ComplexObject"
Sadece derinlemesine bu örtülü ettik part 4 of my OpenAPI (fka Swagger tutorial).
OpenAPI (fka. Swagger) specification explains briefly this too.
Bu, yararlıdır ve değerlerin veri yapısının ComplexObject türünün tamamı olması durumunda çalışır. Bununla birlikte, değerlerin yapısının anahtarın modeline bağlı olarak değiştiği bir senaryom var. JSON Şeması'nda, bunu patternProperties kullanarak kolayca ifade edebilirim. OAS/Swagger'da bunu nasıl ifade edebileceğine dair herhangi bir düşünce var mı? –
Swagger 2.0 kullanıyorum.
Swagger'ın hangi lezzeti kullanıyorsunuz? (jax-rs, play, vb) – Eyal
@Eyal: Swagger-ui kullanıyoruz ve aynı problemi yaşıyoruz. Bir çözümünüz veya çözümünüz var mı? –
@JanHartung Hayır, api'mızda çok fazla haritamız yok ... [abone özelliği izleme sistemindeki bu özellik isteğine abone olmak isteyebilirsiniz.] (Https://github.com/wordnik/swagger- core/issues/244) – Eyal