properties
ws.endpoint.url=https://example.com/api
import javax.inject.*;
import play.libs.ws.*;
import com.fasterxml.jackson.databind.JsonNode;
import java.util.concurrent.CompletionStage;
@Singleton
public class RestApiClient {
private final WSClient ws;
@Inject
public RestApiClient(WSClient ws) {
this.ws = ws;
}
public CompletionStage<JsonNode> get(String endpoint) {
return ws.url(endpoint)
.get()
.thenApply(WSResponse::asJson);
}
public CompletionStage<JsonNode> post(String endpoint, JsonNode data) {
return ws.url(endpoint)
.post(data)
.thenApply(WSResponse::asJson);
}
public CompletionStage<JsonNode> put(String endpoint, JsonNode data) {
return ws.url(endpoint)
.put(data)
.thenApply(WSResponse::asJson);
}
public CompletionStage<JsonNode> delete(String endpoint) {
return ws.url(endpoint)
.delete()
.thenApply(WSResponse::asJson);
}
}
import play.Application;
import play.inject.guice.GuiceApplicationBuilder;
import play.libs.ws.WSClient;
import play.libs.ws.ahc.AhcWSClient;
public class Application {
public static void main(String[] args) {
Application application = new GuiceApplicationBuilder()
.build();
WSClient ws = application.injector().instanceOf(AhcWSClient.class);
RestApiClient restApiClient = new RestApiClient(ws);
restApiClient.get("/api/resource")
.thenAccept(response -> {
System.out.println(response);
});
}
}