2016-07-01 15 views
5

Ho passato un po 'di tempo a cercare una soluzione per la creazione di documenti swagger in Node.JS. La libreria principale è swagger-node, in cui si crea un file yaml swagger e quindi si aggiungono i controller. Fornisce automaticamente i documenti ui swagger nella tua app e esegue la convalida sulla risposta della richiesta & rispetto ai modelli specificati nel tuo yaml.campi nullable in swagger su node.js

Questo è pulito, però ho un requisito che alcuni campi Voglio essere in grado di tornare in modo esplicito o accettare null come un valore, per esempio:

{ 
    id: 123, 
    description: "string", 
    date_sent: null 
} 

Non voglio cancellare la date_sent chiave, voglio dichiararlo esplicitamente come null.

Le specifiche swagger non supportano anyOf che è come lo schema JSON normalmente fa questo credo.

Mi chiedo se c'è una soluzione alternativa? Forse qualche libreria disponibile per il nodo che ha un flag specifico per il produttore x-nullable, o un modo per specificare che i miei campi non obbligatori dovrebbero essere tutti annullabili.

Sto andando a dover scrivere qualcosa da solo che prende il mio file swagger e quindi lo modifica prima che venga eseguito il middleware del validatore, o c'è qualche soluzione che qualcuno può suggerire?

risposta

6

SwaggerUI non supporta i tipi nullable (vedere here). Ma ho usato proprietà nullable come:

type: ['string','null'] 

Dopo che questa proprietà scompare dall'interfaccia utente, ma la convalida funzionava ancora.

+2

aha! Ho provato questo, ma in yaml ho fatto 'stringa' e' null' ma devi avere le virgolette intorno al ''null'' perché funzioni. Grazie! Inoltre, se si aggiunge un 'valore' predefinito, verrà visualizzato nuovamente nei valori di esempio, immagino che non sappia quale utilizzare come esempio – RodH257

+0

Wow! Grazie mille! Non ho pensato al valore di default. Lo proverò per il mio progetto – Sergiy

+2

Questa non è una definizione di tipo Swagger valida, a proposito. – Ron

4

nullable il campo è supportato in OpenAPI (fka Swagger) Specificazione v3.0.0, ma non in v2.0. I tipi Nullable sono definiti come segue:

# Can be string or null 
type: string 
nullable: true 
0

Invece di aggiungere null nella proprietà type, è possibile utilizzare invece la proprietà predefinita.

Swagger.json definizione di proprietà esempio:

"due_date": { 
    "type": "string", 
    "description": "Due date", 
    "default": "null" 
}, 

Si tratta di una definizione di tipo Swagger validi, ed ancora appare come previsto in Swagger UI.