This document will show you how to perform HTTP requests to other services.
You will build a Vert.x application that use the API at https://icanhazdadjoke.com/api and displays a new joke every 3 seconds:
The application fits in a single JokeVerticle
class.
The code of this project contains Maven and Gradle build files that are functionally equivalent.
Here is the content of the pom.xml
file you should be using:
pom.xml
link:pom.xml[role=include]
The Vert.x web client greatly simplifies making HTTP requests compared to the more low-level API found in the Vert.x core API.
It does
The WebClient
class can be found in the io.vertx:vertx-web-client
artifact.
To get new jokes, we need to make HTTP GET requests to https://icanhazdadjoke.com/api. To do that every 3 seconds, we will simply use a Vert.x periodic timer.
The API returns simple JSON objects.
We can test it using a command-line tool like curl
:
$ curl -H "Accept: application/json" https://icanhazdadjoke.com/ {"id":"IJBAsrrzPmb","joke":"What do you call a cow with two legs? Lean beef.","status":200}
Here is the code of the JokeVerticle
class:
link:src/main/java/io/vertx/howtos/httpclient/JokeVerticle.java[role=include]
-
Get a
WebClient
attached to the current Vert.x instance. -
HTTP GET request for path
/
to hosticanhazdadjoke.com
, on port443
(HTTPS). -
Do not forget to enable SSL encryption.
-
Explicitly say that we want JSON data.
-
The response will automatically be converted to JSON.
-
We expect an HTTP 200 status code, else it will fail the response.
-
The body is a JSON object, and we write the result to the console.
The JokeVerticle
already has a main
method, so it can be used as-is to:
-
create a
Vertx
context, then -
deploy
JokeVerticle
.
You can run the application from:
-
your IDE, by running the
main
method from theJokeVerticle
class, or -
with Maven:
mvn compile exec:java
, or -
with Gradle:
./gradlew run
(Linux, macOS) orgradle run
(Windows).
This document covered:
-
the Vert.x web client for making HTTP requests,
-
extracting data from a JSON response,
-
Vert.x periodic tasks.