如何以编程方式触发Spark Java Web Framework请求

问题描述

Spark框架是否可以通过编程方式触发请求?说我们有

http.get("/hello/:route_param") { "Hello Spark!" }

如何使用正确的pathquerybody等来调用它,例如:

http.call(
  url  = "/hello/alex?a=b",body = "{ value: 20 }"
) // => "Hello Spark!"

P.S。

我需要它来添加批次/batch路由-这样就可以用其他路由和参数的列表来调用它并获取结果列表。

解决方法

如果“以编程方式”的意思是“不启动HTTP服务器并执行HTTP请求”,那么我认为答案是。 Spark并没有提供这种功能。

有一些可能的解决方法:

  1. 您可以在应用程序中启动Spark并触发HTTP请求。这种方法的一个示例是我为我的Spark插件编写的integration test
  2. 使用MockRunner's Servlet module创建(伪)HttpServletRequest。使用RequestResponseFactory.create(HttpServletRequest)将其转换为Spark Request。对于响应也是如此。将Spark Route重构为一个单独的类,并使用刚刚创建的RequestResponse变量来调用它。