2016-11-05 2 views
0

Wir haben vor kurzem begonnen, Node.js für unseren API-Server anstelle von Java zu verwenden. Abgesehen von all den guten Dingen, die Node.js bietet, vermisse ich am meisten ein passendes Antwortobjekt für eine API.Mit einer festen Antwortstruktur mit node.js und Express

Da Javascript dynamisch typisierte Sprachen sind, können Objekte während der Rückmeldung dynamisch erzeugt werden. Dies steht im Gegensatz zu Java, wo ich eine Klasse haben kann, von der eine Instanz in der Antwort serialisiert wird. Ich kann diese Klasse jederzeit nachschlagen, um festzustellen, wie die API reagiert.

Gibt es ein solches Entwurfsmuster in Node.Js/Javascript. Wir möchten, dass unsere APIs diesem Vorlagenobjekt strikt entsprechen.

+0

Sie können in Swagger nach einer Methode suchen, um Antwortobjekte zu dokumentieren und zu validieren. Alternativ können Sie Typescript verwenden, um eine Überprüfung der Kompilierungszeit durchzuführen –

Antwort

2

Sie können sie selbst machen.

Wenn Sie beispielsweise ES6 verwenden, können Sie verschiedene Fehler- und Antwortmodule verwenden und Ihre eigene Validierung in der Klasse durchführen, die diese Antworten erstellt.

Zum Beispiel

// sample-response.js 

class SampleResponse { 
    constructor(message) { 
    // validate `message` somehow 

    this.data = message 
    } 
} 

module.exports = { 
    SampleResponse 
} 

Dann aber Sie Ihre HTTP-Schnittstelle sind zu strukturieren, können Sie zurückschicken je nachdem, welche Antwort Sie möchten (zum Beispiel mit Express):

res.send(new SampleResponse(message)) 

Samen geht mit Fehlern, etc. Sie sind nicht unbedingt durch einen Mangel an Typen mit JavaScript beschränkt, Sie müssen nur die Dinge anders durchsetzen.

Wenn Sie nicht ES6 verwenden, können Sie etwas tun:

module.exports = { 
    SampleResponse: function(message) { 
    // do some validation 

    return { data: message }; // or whatever you want 
    } 
}; 
1
  1. Sie Fluss oder Typoskript für Sie Code verwenden können.

  2. Sie können Vertragstest-Tools verwenden. Hängt von Vertrag für Ihren REST API:

Meine Wahl ist Typoskript und Abao + RAML zu verwenden.

Verwandte Themen