gpt4 book ai didi

scala - 对于 2.6.X,Play 中的 WS 变得难以置信的复杂

转载 作者:行者123 更新时间:2023-12-03 03:27:56 32 4
gpt4 key购买 nike

对于 Play 2.3.X,WS 模块非常容易使用:

WS.url(s"http://$webEndpoint/hand/$handnumber").get()

对于如此简单明了的用法。

在 Play 2.6.x 中,根据链接: https://www.playframework.com/documentation/2.6.x/JavaWS您需要先创建一个http客户端。

WSClient customWSClient = play.libs.ws.ahc.AhcWSClient.create(
play.libs.ws.ahc.AhcWSClientConfigFactory.forConfig(
configuration.underlying(),
environment.classLoader()),
null, // no HTTP caching
materializer);

更重要的是,你还需要一个物化器和一个支持物化器的akka​​系统。

String name = "wsclient";
ActorSystem system = ActorSystem.create(name);
ActorMaterializerSettings settings = ActorMaterializerSettings.create(system);
ActorMaterializer materializer = ActorMaterializer.create(settings, system, name);
// Set up AsyncHttpClient directly from config
AsyncHttpClientConfig asyncHttpClientConfig = new DefaultAsyncHttpClientConfig.Builder()
.setMaxRequestRetry(0)
.setShutdownQuietPeriod(0)
.setShutdownTimeout(0).build();
AsyncHttpClient asyncHttpClient = new DefaultAsyncHttpClient(asyncHttpClientConfig);

// Set up WSClient instance directly from asynchttpclient.
WSClient client = new AhcWSClient(
asyncHttpClient,
materializer

);

我知道它会为 WS 客户端添加更多功能,但是当我只想要一个简单的 http 客户端时,用法就变得难以接受,太复杂了。

最佳答案

您链接到的页面显示:

We recommend that you get your WSClient instances using dependency injection as described above. WSClient instances created through dependency injection are simpler to use because they are automatically created when the application starts and cleaned up when the application stops.

手动创建 WSClient 实例非常繁琐,您应该不会感到惊讶。

同一页面描述了如何使用 WSClient 的注入(inject)版本:

import javax.inject.Inject;

import play.mvc.*;
import play.libs.ws.*;
import java.util.concurrent.CompletionStage;

public class MyClient implements WSBodyReadables, WSBodyWritables {
private final WSClient ws;

@Inject
public MyClient(WSClient ws) {
this.ws = ws;
}
// ...
}

这和以前版本中一样简单。实际上,在以前的 Play 版本中,您还可以创建 WSClient 的自定义实例,并且该实例过去具有相当的复杂性(模数 Akka 的东西)。

关于scala - 对于 2.6.X,Play 中的 WS 变得难以置信的复杂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46683070/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com