Nodejs HTTP-Server
Published on 14/05/2011
1 min read
In category
web
Schreibt man eine Client-Anwendung, die mit einem Server kommunizieren soll, weclhes zum Testing nicht zur Verfügung steht, muss man schauen, wie man die Kommunikation simulieren kann. Am besten wäre eine Test-Implementierung des Servers, der die Spezifikation/API unterstützt. Bevor die Spezifikation zum Test implementiert werden kann, muss jedoch die Grundfunktionalität (HTTP) des Server implementiert werden. Um sich das zu ersparen, kann man z.B. nodejs verwenden.
var http = require('http'),
url = require('url');
var results = \["status=OK&desc=Alles paletti&url=http://www.heise.de/",
"status=NOK&desc=Oh, problem&url="\];
var httpServer = http.createServer();
httpServer.on('request', function(request, response) {
// Parse the entire URI to get just the query
var query = url.parse(request.url, true).query;
// parse the query parameters
var param1 = query\['p1'\];
var param2 = query\['p2'\];
var param3 = query\['p3'\];
// Do something with the parameters to generate the response.....
// return random response
response.writeHead(200, {'Content-Type': 'text/plain'});
var rnd = Math.floor(Math.random() \* results.length)
response.end(results\[rnd\]);
});
httpServer.listen(1337, '127.0.0.1');
console.log('- Server running at http://127.0.0.1:1337/');
Wie man sehen kann, wird in wenigen Zeilen JavaScript ein HTTP-Server geschrieben, der auf den "request"-Event horcht. Bei jedem Request werden die Parameter ermittelt und die Response generiert. Nodejs bietet verschiedene Events an, für die ein Callback-Funktion registriert werden kann. Beim HTTP-Server sind das z.B.: request, connection, close. Weitere Details sind in der Docu zu finden.
Links:
- Nodejs API: http://nodejs.org/docs/v0.4.7/api/all.html