자바

[Java] Vert.x HttpServer 와 HttpClient 간단한 통신!

알통몬_ 2018. 7. 6. 14:53
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


지난 포스팅에서 Vert.x 라는  툴킷에 대해서 공부했었는데요.


이번 포스팅에서는 Vert.x 를 사용해서 아주 간단하게

HttpServer 와 HttpClient 간의 통신하는 코드를 작성해봤씁니다.


pom.xml 에 의존성 추가

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
        <!-- https://mvnrepository.com/artifact/io.vertx/vertx-core -->
        <dependency>
            <groupId>io.vertx</groupId>
            <artifactId>vertx-core</artifactId>
            <version>3.5.2</version>
        </dependency>
        <!-- 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>
 
        <!-- https://mvnrepository.com/artifact/io.vertx/vertx-web -->
        <dependency>
            <groupId>io.vertx</groupId>
            <artifactId>vertx-web-client</artifactId>
            <version>3.5.2</version>
        </dependency>
cs


HttpServers.java ( 지난 포스팅과 같은 코드를 사용했습니다. )

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
40
41
42
43
44
45
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.handler.BodyHandler;
 
public class HttpServers extends AbstractVerticle {
 
    @Override
    public void start() {
 
        Router router = Router.router(Vertx.vertx());
        router.post().handler(BodyHandler.create());
        router.route().handler(rc -> {
            String path = rc.request().path();
            MultiMap map = rc.request().params();
            switch (path) {
                case "/membership":
                    String id = map.get("id2");
                    System.out.println(id);
                break;
                default:
                    System.out.println("ggggg");
                    break;
            }
            HttpServerResponse res = rc.response();
            String id = map.get("id");
            JsonObject json = new JsonObject().put("code""000").put("id", id);
 
            res.putHeader("content-type""text/plain").end(json.toString());
        });
 
        Vertx.vertx().createHttpServer().requestHandler(router::accept).listen(9292);
    }
 
    public static void main(String[] args) throws Exception {
 
        HttpServers server = new HttpServers();
        server.start();
 
    }
}
 
cs

HttpClients.java

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
import io.vertx.core.AbstractVerticle;
import io.vertx.core.Handler;
import io.vertx.core.Vertx;
import io.vertx.core.http.HttpClient;
import io.vertx.core.http.HttpClientResponse;
 
public class HttpClients extends AbstractVerticle {
    
    @Override
        public void start() throws Exception {
            HttpClient httpClient = Vertx.vertx().createHttpClient();
            httpClient.getNow(9292"localhost""/"new Handler<HttpClientResponse>() {
 
                @Override
                public void handle(HttpClientResponse httpClientResponse) {
                    System.out.println("Response received");
                }
            });
        }
    
    public static void main(String[] args) {
        try {
            new HttpClients().start();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
cs

HttpServers.java 를 먼저 실행시켜 줍니다.

그리고 HttpClients.java 를 실행시키면 먼저 클라이언트가 요청을 보내고,


그에 대한 응답을 서버측에서 클라이언트 측으로 보냅니다.


실제로 해보시면 금방 이해가 되실 거에요.

이상입니다.

감사합니다.

반응형