Ho già un documento di swagger funzionante che genera documentazione utilizzando il progetto Swagger-UI, ma sto riscontrando un problema minore.Definire una proprietà con un tipo di dati misto in Swagger
Mongoose supporta un tipo di dati Mixed
, che è fondamentalmente un oggetto non strutturato che può contenere qualsiasi cosa. Tuttavia, in base alle specifiche Swagger, gli unici valori possibili per type
di proprietà sono string
, integer
, number
, boolean
e array
. Non sono riuscito a trovare nulla nella documentazione, su Google o nei problemi aperti per il progetto Swagger-Spec su GitHub che consentirebbe tipi di dati misti.
Nella documentazione di Swagger-Spec, dove definiscono le opzioni type
, fanno riferimento al progetto JSON-Schema. Secondo la specifica JSON-Schema, l'opzione object
dovrebbe essere un'opzione, ma non è elencata come valore potenziale nella specifica Swagger.
Qualcuno sa di un modo per indicare in un documento Swagger che la proprietà di un modello può contenere qualsiasi valore (un singolo valore primitivo o un oggetto)?
Esempi
definizione di schema Mongoose:
var sampleSchema = new mongoose.Schema({
lookupCodes : { type: [mongoose.Schema.Types.Mixed] },
address: { type: mongoose.Schema.Types.Mixed }
});
mongoose.model('Sample', sampleSchema);
utilizzo del modello mongoose:
var Sample = mongoose.model('Sample');
var doc = new Sample();
Questi sono tutti valori validi per le due proprietà definite:
doc.lookupCodes = ['A', 'B', 3, 4, 5, 'F'];
doc.lookupCodes = ['A', { code: '123' }, 5];
doc.address = '123 Main St., San Jose, CA, 95125';
doc.address = { street: '123 Main St.', city: 'San Jose', state: 'CA', postalCode: '95125'}
Swagger 1.2 documento (frammento):
"models": {
"Sample": {
"properties": {
"lookupCodes": {
"type": "array",
"items": {
"type": "??????"
},
"description": "An array of lookup codes. Codes can be strings, numbers or an object containing the `code` property."
},
"address": {
"type": "??????",
"description": "An address. This value can be a single string, containing all the elements of the address together, or it can be a structured object with each of the elements as separate properties of the object."
},
Sto semplicemente cercando un modo per lasciare che lo sviluppatore la visualizzazione della documentazione di sapere che una proprietà specifica all'interno di un modello potrebbe accettare/restituire qualsiasi valore (variabile primitiva o un oggetto).
È possibile modificare la domanda con un esempio di tale modello e dove si desidera utilizzarlo (quale tipo di parametro, ad esempio)? La tua domanda contiene dettagli contraddittori in quanto la restrizione a cui ti riferisci non si applica ai modelli, ma la tua soluzione teorica non sembra andare in linea con quello che stai cercando di ottenere. – Ron
@webron l'esempio più semplice sarebbe una singola proprietà di un modello che potrebbe contenere numeri o stringhe. mangusta supporta questa opzione come opzione usando il tipo di dati 'Mixed', ma Swagger non sembra avere un valore' type' corrispondente che consentirebbe questo. –
Non sono sicuro di come pensi che 'object' possa esserci d'aiuto, cosa che mi confonde. – Ron