在间隔之后从休息端点url发送不同的响应

时间:2018-05-03 21:46:23

标签: java rest vert.x

有一个应用程序用于继续轮询某个休息端点URL以获取特定时间间隔后的状态。其余的API正在等待某些操作完成。直到时间操作未完成并且应用程序将到达端点,此休息API将状态作为状态发送到响应状态'进行中'。一旦操作完成,其他API将响应成功发送为状态。

我很难对这个其他API进行模拟,因为我们不想点击实际的其他API进行测试。

有没有办法在应用程序通过点击端点进行轮询后的间隔后从模拟rest API发送不同的响应?

我正在使用vertx和java。

1 个答案:

答案 0 :(得分:0)

这与Vert.x没有特别关系,但仍然是。

这里的技巧不是计算间隔,而是计算此模拟终点的次数。

这是一个代码,用于演示如何运作:

private static final Vertx vertx = Vertx.vertx();
private static final HttpClient client = vertx.createHttpClient(
        new HttpClientOptions()
                .setDefaultHost("localhost")
                .setDefaultPort(8443));
public static void main(final String[] args) {
    AtomicInteger hitCounter = new AtomicInteger(0);
    vertx.createHttpServer().requestHandler((c) -> {
        if (hitCounter.incrementAndGet() >= 5) {
            c.response().setStatusCode(200).end();
        }
        else {
            c.response().setStatusCode(202).end();
        }
    }).listen(8443);

    System.out.println("Server started");

    callServerUntilSuccess();
}

public static void callServerUntilSuccess() {
    client.request(HttpMethod.GET, "/", (r) -> {
        if (r.statusCode() == 200) {
            System.out.println("I'm done");
        }
        else {
            System.out.println("I'll try again");
            vertx.setTimer(1000, (l) -> callServerUntilSuccess());
        }
    }).end();
}