Ich weiß aus the documentation, dass ich meine POJOs wie diese mit Anmerkungen versehen kann:Wie Swagger Enum durch einen Link zu einer Ressource zu ersetzen?
nun die Methode"properties": {
...,
"status": {
"type": "string",
"description": "pet status in the store",
"enum": [
"available",
"pending",
"sold"
]
}
}
Bild zu implementieren:
@ApiModelProperty(value = "pet status in the store", allowableValues = "available,pending,sold")
public String getStatus() {
return status;
}
wie etwas zu produzieren
@ApiModelProperty(value = "pets in the store")
public Set<String> getPets() {
return pets;
}
die zurück eine Liste der im Laden verfügbaren Haustiere. Zum Beispiel könnte es eines Tages ["cats", "dogs", "songbirds"]
und dann nur ["cats", "dogs"]
sein, wenn die Singvögel ausverkauft sind.
Meine API würde in der Tat einen Endpunkt hat, um die Liste von Haustieren zu holen:
Statt allowableValues = "cats, dogs, songbirds"
der Verwendung ich mit einer Swagger Anmerkung angeben mag, dass das Feld a enthalten muss Wert, der vom angegebenen Endpunkt zurückgegeben wird. Das heißt, so etwas wie:
@ApiModelProperty(value = "pets in the store", allowableValues = "/pets")
public Set<String> getPets() {...}
dies, um meinen Client/Front-End zu ermöglichen, zu wissen, welche Werte Nutzen sein können, wenn eine Anfrage an machen, zum Beispiel ein Haustier kaufen online. Genau wie ich es könnte, wenn ich "enum": ["cats", "dogs", ..]
hätte
Ich muss die Annotation zur Laufzeit nicht auflösen: Ich möchte lieber, dass Swagger eine Annotation liest, die eine Endpunktadresse enthält, von der die Clients den möglichen Wert für ein Feld abrufen können. Wenn ich das richtig verstehe, ist Ihr Ansatz der Versuch, die Enumerationsliste zur Laufzeit zu generieren. Obwohl es interessant ist, ist es nicht genau das, was ich brauche (mindestens so komplex wie eine neue Swagger Annotation, um 2- zu implementieren, was ist mit der statischen Version des swagger.json Schemas?). –
@ Niccolò "Ihr Ansatz, wenn ich richtig verstehe, ist ein Versuch, die Enumerationsliste zur Laufzeit zu generieren". Der von mir vorgeschlagene Ansatz generiert 'compiledValues' zur Kompilierzeit, nicht zur Laufzeit. –