间隔一段时间后,从休息端点发送不同的响应 url
after a interval send different response from a rest endpoint url
有一个应用程序用于在特定时间间隔后继续轮询一些休息端点 URL 以获取状态。其余 API 正在等待某个操作完成。直到操作不会完成并且应用程序将到达端点时,剩下的 API 发送状态作为响应状态 'in progress'。一旦操作完成,休息 API 发送成功作为响应状态。
我很难模拟此休息 API,因为我不想使用实际休息 API 进行测试。
在应用程序将通过点击端点进行轮询的时间间隔后,是否有任何方法可以从模拟休息 API 发送不同的响应?
为此,我正在使用带 java 的顶点。
这与 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();
}
有一个应用程序用于在特定时间间隔后继续轮询一些休息端点 URL 以获取状态。其余 API 正在等待某个操作完成。直到操作不会完成并且应用程序将到达端点时,剩下的 API 发送状态作为响应状态 'in progress'。一旦操作完成,休息 API 发送成功作为响应状态。
我很难模拟此休息 API,因为我不想使用实际休息 API 进行测试。
在应用程序将通过点击端点进行轮询的时间间隔后,是否有任何方法可以从模拟休息 API 发送不同的响应?
为此,我正在使用带 java 的顶点。
这与 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();
}