Am 27.04.2012 13:18, schrieb Sönke Ludwig:
Am 27.04.2012 11:57, schrieb David:
I am not sure if you're aware of Flask, Flask is a microframework for
Python.
It provides something called "Blueprints", you can register e.g.
"routes" to this Blueprint and to use them you've to add them to the
main application. This makes code way more readable!
Also some kind of after_request and before_request handlers would be
great, you could use them e.g. fetching a user from the database and
providing it to the handler (over a thread-local?).
I didn't know flask before and the website seems to be down currently ;)
Yes :(
Admin paused the server, too much IO or something.
But is the UrlRouter (see http://vibed.org/docs#http-routing and
http://vibed.org/api/vibe.http.router#UrlRouter) something equivalent?
It allows you to specify multiple patterns that are matched in sequence
until a request handler writes a response:
auto r = new UrlRouter;
r.any("*", &performAuth);
r.get("/", &renderHomePage);
listenHttp(settings, r);
This would first always match performAuth, which could check the user
credentials and write out a message if the user is not authenticated.
Otherwise it just does nothing and the router will continue to the next
match, which is renderHomePage() in this case for "GET /".
This is useful!
Whats not directly possible in the router is something like
after_request. But you can do it easily by wrapping the call:
auto r = new UrlRouter;
//...
listenHttp(settings, (req, res){
before_request(req, res);
r.handleRequest(req, res);
after_request(req, res);
});
Awesome!