我定义了数据类,配置了 gson 并创建了路由来处理发布请求,如下所示:
data class PurchaseOrder(val buyer: String, val seller: String,
val poNumber: String, val date: String,
val vendorReference: String)
install(ContentNegotiation) {
gson {
setDateFormat(DateFormat.LONG)
setPrettyPrinting()
}
post("/purchaseOrder"){
val po = call.receive<PurchaseOrder>()
println("purchase order: ${po.toString()}")
call.respondText("post received", contentType =
ContentType.Text.Plain)
Run Code Online (Sandbox Code Playgroud)
以下 JSON 在 POST 请求中发送
{
"PurchaseOrder" : {
"buyer": "buyer a",
"seller": "seller A",
"poNumber": "PO1234",
"date": "27-Jun-2018",
"vendorReference": "Ref1234"
}
}
Run Code Online (Sandbox Code Playgroud)
输出显示所有空值。
purchase order: PurchaseOrder(buyer=null, seller=null, poNumber=null,
date=null, vendorReference=null)
Run Code Online (Sandbox Code Playgroud)
从 call.request.receiveChannel() 读取数据确实显示了正确的 JSON。所以我正在接收数据,但 call.receive() 似乎没有产生预期的结果。
手动获取 JSON 并尝试按如下方式创建 …
弹性搜索版本 5.4.3
我使用单例来创建一个客户端,这里是主要代码
TransportClient tclient = null;
if (clusterName != null) {
Settings settings = Settings.builder()
.put("cluster.name",clusterName)
.put("client.transport.sniff", true)
.build();
tclient = new PreBuiltTransportClient(settings);//here will throw the exception
} else {
tclient = new PreBuiltTransportClient(Settings.EMPTY);
}
Run Code Online (Sandbox Code Playgroud)
第一次运行到代码“tclient = new PreBuiltTransportClient(settings);”时,抛出异常
IllegalStateException:availableProcessors 已设置为 [4]
但是第二次调用它会成功,并且客户端将被终止,有人知道如何解决它吗?
我正在尝试使用提供的 Elasticsearch java 测试框架对我的 es 项目进行一些集成测试。我在 IntelliJ 中有一个非常简单的测试设置:
class FormTest : ESIntegTestCase() {
override fun nodeSettings(nodeOrdinal: Int): Settings = Settings.builder()
.put(super.nodeSettings(nodeOrdinal))
//.put("node.mode", "network")
.build()
@org.junit.Test fun start() {
ensureGreen()
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行它时,出现以下异常:
java.lang.RuntimeException: found jar hell in test classpath
at org.elasticsearch.bootstrap.BootstrapForTesting.<clinit>(BootstrapForTesting.java:92)
at org.elasticsearch.test.ESTestCase.<clinit>(ESTestCase.java:190)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at com.carrotsearch.randomizedtesting.RandomizedRunner$2.run(RandomizedRunner.java:592)
Caused by: java.lang.IllegalStateException: jar hell!
duplicate jar [C:\Users\user\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\181.5281.24\lib\idea_rt.jar] on classpath: ...
at org.elasticsearch.bootstrap.JarHell.parseClassPath(JarHell.java:142)
at org.elasticsearch.bootstrap.JarHell.parseClassPath(JarHell.java:98)
at org.elasticsearch.bootstrap.JarHell.checkJarHell(JarHell.java:89)
at org.elasticsearch.bootstrap.BootstrapForTesting.<clinit>(BootstrapForTesting.java:90)
... 4 more
Run Code Online (Sandbox Code Playgroud)
我找到了一些绕过 jar 地狱检查的方法,但如何解决问题?
我们使用一个糟糕的 API,其中 404 响应意味着一个空数组。
有没有办法告诉 React Query 将 404 错误转换为空数组?
我希望有办法做这样的事情吗?
const {data, isLoading, isError} = useQuery('key', apiCall, {
onError: (error) => {
if(error.statusCode === 404) {
setData([]);
setIsError(false);
}
}
});
Run Code Online (Sandbox Code Playgroud)