11 HTTP クライアント
Ratpack はリモート HTTP 呼び出しを行う HttpClient
を提供しています。Ratpack が提供する HttpClient
は完全に非ブロッキングであり、Ratpack ライブラリの中心的な部分です。Ratpack サーバーと同様に、HttpClient
も Netty を内部的に使用し、実際には Netty のベストプラクティスに従って同じ EventLoopGroup
を共有しています。
1.11 基本 GET リクエスト
import ratpack.core.http.client.HttpClient;
import ratpack.test.embed.EmbeddedApp;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class Example {
public static void main(String... args) throws Exception {
try (EmbeddedApp remoteApp = EmbeddedApp.fromHandler(ctx -> ctx.render("Hello from remoteApp"))) {
EmbeddedApp.fromHandler(ctx -> ctx
.render(
ctx
.get(HttpClient.class)
.get(remoteApp.getAddress())
.map(response -> response.getBody().getText())
)
).test(httpClient ->
assertEquals("Hello from remoteApp", httpClient.getText())
);
}
}
}