2017-02-03 5 views
1

Gibt es ein Knotenmodul zur Validierung der Schema/Werte im Express-req -Objekt, basierend auf der Swagger YAML-Schemadefinition für diese Anfrage?Validierung der Express-Anfrage basierend auf Swagger YAML

Lassen Sie uns sagen, das relevante Teil des YAML ist:

/books/{genre}: 
    get: 
    parameters: 
     - name: genre 
     in: path 
     required: true 
     type: string 
     - name: size 
     in: query 
     required: false 
     type: number 

A erf Objekt aus der folgenden Anforderung abgeleitet sollte Validierung übergeben:

GET /books/sci-fi   
GET /books/thriller?size=5 

Und dieser ausfallen sollte:

GET /books/12 
+0

Sie können tatsächlich google "nodejs swagger" oder Hit npm mit einer ähnlichen Suche und finden Sie ein ziemlich gutes Werkzeug für den Aufbau Express-basierte Swagger-Apps. – Paul

+0

@Paul Ich habe es natürlich probiert. Ich wollte meinen Server auf Swagger aufbauen, aber ich konnte nicht herausfinden, wie man meine Router anpasst, Fehlerbehandlung ... Haben Sie eine konkrete Bibliothek, die meiner Frage entspricht? – Aleks

+0

Ja, aber das ist eigentlich ein Thema für die Seite, weshalb du Close Voices erhältst. Bei Stack geht es darum, Leute zu bitten, Ihnen bei der Lösung von Problemen in Code, den Sie geschrieben haben, zu helfen, und nicht, um Ihnen zu helfen, Google zu googeln und Tools zu bewerten. – Paul

Antwort

1

Um einen Template node.js-Server mit einer yaml-Datei zu generieren, versuchen Sie es mit swagger.io> Swagger Editor> Online E ditor> Erzeuge deinen yaml im linken Bereich> Erzeuge Server> Node.js

Das herunterladbare Paket wird swagger-tools zur Validierung verwenden. Der Standard index.js im generierten Code wird definiert, dass Ihre Controller (benutzerdefinierter Code jede Anfrage bearbeiten) im Controller Verzeichnis leben:

// swaggerRouter configuration 
var options = { 
    swaggerUi: '/swagger.json', 
    controllers: './controllers', 
    useStubs: process.env.NODE_ENV === 'development' ? true : false // Conditionally turn on stubs (mock mode) 
}; 

diese Elemente an den Endpunkt Definition Fügen Sie den Controller-Namen zu definieren und die Methodenname:

Sie können diese Eigenschaft zu Ihrem Endpunkt Definition fügen Sie die Prahlerei-Tools Middleware zu erzählen, die javaScript-Datei die Anforderung bearbeiten:

x-swagger-router-controller: myController 
operationId: myMethod 

ein Controller Verzeichnis erstellen myController.js enthält, exports myMethod:

module.exports.myMethod = myMethod; 
function myMethod(req, res) { 
    //do stuff 
    res.end(); 
} 

Die Eingaben werden überprüft, bevor die Anforderung an Ihren Controller weitergeleitet wird.

+0

schnelle Frage zu diesem Thema habe ich alle oben genannten erfolgreich abgeschlossen ^. Swagger bietet mir derzeit eine serverseitige Validierung an (was gut ist), aber wenn ich diese App in der Produktion verwenden würde, müsste ich eine andere Form der serverseitigen Validierung verwenden und Swagger nicht verwenden? – Malone

Verwandte Themen