2013年6月19日

【Vert.x】Javaでルーティング



もうアイキャッチ画像無いよ。
美女でも使うか?

今回はJavaでルーティング。
全部を両方やるのはだるいので、次のMySQLへのアクセスぐらいまでは両方で。



import org.vertx.java.core.Handler;
import org.vertx.java.core.http.*;
import org.vertx.java.deploy.Verticle;

public class App extends Verticle {

  public void start() {
    HttpServer server = vertx.createHttpServer();
    // RouteMatcherクラスはHttpServerRequestなどと同じパッケージ
    RouteMatcher routeMatcher = new RouteMatcher();
    
    // インデックス
    routeMatcher.get("/", new Handler() {
      public void handle(HttpServerRequest req) {
        req.response.end("Hello World");
      }
    });

    // ルーティング
    routeMatcher.get("/test", new Handler() {
      public void handle(HttpServerRequest req) {
        req.response.end("This is a test page"); 
      }
    });

    // パラメータ付き
    routeMatcher.get("/:username/:password", new Handler() {
      public void handle(HttpServerRequest req) {
        String username = req.params().get("username");
        String password = req.params().get("password");
        req.response.end("Username is " + username + " and Password is " + password);
      }
    });

    // ルート無し
    routeMatcher.noMatch(new Handler() {
      public void handle(HttpServerRequest req) {
        req.response.statusCode = 404;
        req.response.end("404 Not Found");
      }
    });

    // サーバ立ち上げ
    server.requestHandler(routeMatcher).listen(9997, "localhost");
  }
}

もうちょっとやったらJavaのみでやっていきます。
動的格付けもいいんですが、静的格付けの方が好きなんですって理由ぐらいです。
あと、もともとVert.xはJVMですし。あんまり関係ないか。