2016-07-22 5 views
0

Entschuldigung, wenn diese Frage offensichtlich erscheint, aber ich bin neu in Express, Node und Swagger.Automatische Validierung der Swagger API-Anfrage im Express?

Ich habe eine Swagger-Spezifikation für eine API geschrieben.

Gibt es Tools, mit denen Sie eine Anfrage an eine dokumentierte Swagger-API zusammen mit der Datei Swagger.json übergeben können, um zu überprüfen, ob die erforderlichen Parameter vorhanden sind, die Enum-Werte für diese Parameter korrekt sind usw.?

So etwas wie:

validator.validate ("./swagger.json", req, function (req, res, err) { 
    if (err) { 
     res.status('400').send(err.message()); 
    } 
    else { 
     // Call my controller 
     swaggerController(req, res); 
    } 
}); 

Ich glaube, es ist, aber es ist schwierig, oder ich auf der Suche bin nicht für die richtige Sache zu finden.

Antwort

0

Hier ist ein Beispiel für Middleware zum Validieren eingehender Antworten gegen Swagger Json-Schema. Nur ein Proof of Concept, aber es kann Sie in die richtige Richtung:

swagger-json-schema-middleware-example

0

Ja, können Sie dies tun. Es gibt ein Generator-Projekt, das genau das tut, express-no-stress. Erhalten Sie es here:

Bei der Verwendung wird jede API-Anfrage gegen Ihre Swagger API-Beschreibung, die von Ihnen in Api.yaml zur Verfügung gestellt wird, validiert.

Zum Beispiel die body einer POST Anfrage /examples zu validieren, können Sie wie folgt vorgehen:

bearbeiten Api.yaml

... 
definitions: 
    # define the example body i.e. require the property name 
    ExampleBody: 
    type: object 
    title: example 
    required: 
     - name 
    properties: 
     name: 
     type: string 
     description: The example name 
paths: 
    # define your /examples POST endpoint 
    # reference the ExamplesBody definition from above 
    /examples: 
    post: 
     tags: 
     - Examples 
     description: Create a new example 
     parameters: 
     - name: example 
      in: body 
      description: number of items to skip 
      required: true 
      schema: 
      $ref: "#/definitions/ExampleBody" 
     responses: 
     200: 
      description: Returns all examples 
... 

Als nächstes wird in der Node.js Code eine Route-Handler für POST s zu/Beispiele

z

app.post('/examples', function (req, res) { /* your handler logic here */ /* no need to validate the request payload. it will be done automatically */ });

Hinweis: enthalten nur Ihre Handler-Logik. Die Körpervalidierung wird automatisch durchgeführt.

Verwandte Themen