有一个应用程序用于继续轮询某个休息端点URL以获取特定时间间隔后的状态。其余的API正在等待某些操作完成。直到时间操作未完成并且应用程序将到达端点,此休息API将状态作为状态发送到响应状态'进行中'。一旦操作完成,其他API将响应成功发送为状态。
我很难对这个其他API进行模拟,因为我们不想点击实际的其他API进行测试。
有没有办法在应用程序通过点击端点进行轮询后的间隔后从模拟rest API发送不同的响应?
我正在使用vertx和java。
答案 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();
}