공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
이번 포스팅에서는 Vert.x 라는 것에 대해 공부합니다.
Vert.x 란 공식페이지에
Eclipse Vert.x is a tool-kit for building reactive applications on the JVM.
위처럼 설명하고 있는데요.
JVM 에서 반응형 애플리케이션을 빌드하기 위한 툴킷 이라고 하네요.
HttpServer를 구축하기 위해서는 Core 와 Web 모듈을 추가해야 합니다.
Maven Repository 사이트에 들어가셔서 vertx 라고 검색을하면
몇 가지가 쭉 나오는데요. Vert.x Core 와 Vert.x Web 을 추가하시면 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <!-- https://mvnrepository.com/artifact/io.vertx/vertx-unit --> <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-unit</artifactId> <version>3.5.2</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/io.vertx/vertx-web --> <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-web</artifactId> <version>3.5.2</version> </dependency> | cs |
만약 메이븐을 쓰시지 않으신다면 공식홈페이지에서 Vert.x 를 다운받으시면 됩니다.
HttpServer 열기
공식페이지에는
1 2 3 4 5 6 7 8 9 10 11 | import io.vertx.core.AbstractVerticle; public class Server extends AbstractVerticle { public void start() { vertx.createHttpServer().requestHandler(req -> { req.response() .putHeader("content-type", "text/plain") .end("Hello from Vert.x!"); }).listen(8080); } } | cs |
요렇게 나와있는데 이거 쓰면 빨간줄 생기더라구요 ㅎㅎ
그래서 다른 방법을 찾아봤습니다.
클래스를 하나 만들고 AbstractVerticle 를 상속받으면 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | package netty.server.http; import io.vertx.core.AbstractVerticle; import io.vertx.core.MultiMap; import io.vertx.core.Vertx; import io.vertx.core.http.HttpServerResponse; import io.vertx.core.json.JsonObject; import io.vertx.ext.web.Router; import io.vertx.ext.web.RoutingContext; import io.vertx.ext.web.handler.BodyHandler; public class HttpServer extends AbstractVerticle{ public void start() { Router router = Router.router(Vertx.vertx()); router.route().handler(BodyHandler.create()); router.post("/membership").handler(this::getOk); Vertx.vertx() .createHttpServer() .requestHandler(router::accept) .listen(9292,"xxx.xxx.xxx.xxx"); } public void getOk(RoutingContext routingContext) { HttpServerResponse res = routingContext.response(); MultiMap map = routingContext.request().params(); String id = map.get("id"); JsonObject json = new JsonObject().put("code", "000").put("id", id); res.putHeader("content-type", "text/plain").end(json.toString()); } public static void main(String[] args) throws Exception { HttpServer server = new HttpServer(); server.start(); } } | cs |
router.post() 에서 ""안에 들어가는 값은 host 뒤에 붙는 주소입니다.
예를 들어 클라이언트가 http://xxx.xxx.xxx.xxx/users 라는 곳으로 로그인을 요청한다고 하면
post("/users") 라고 사용하면 됩니다.
그리고 getOk() 메서드에서 map은 요청 값을 처리합니다.
다음 포스팅에서
안드로이드와 Vert.x 간의 Http통신에 대해 다룰 때 알아보도록 하겠습니다.
이상입니다.
감사합니다.
'자바' 카테고리의 다른 글
리턴 값이 3개일 때 Integer.compare(int x, int y) 사용히기! ( Double.compare(), Float.compare() (0) | 2018.08.20 |
---|---|
[Java] Vert.x HttpServer 와 HttpClient 간단한 통신! (0) | 2018.07.06 |
자바 SecureRandom 클래스를 이용한 인증토큰만들기! (1) | 2018.04.16 |
자바 배열에서 [] 와 ... 의 차이?! (0) | 2018.04.03 |
자바 NIO UDP 채널 발신자와 수신자와 통신 (0) | 2017.05.05 |