如何以编程方式触发 Spark Java Web Framework 请求
How to trigger Spark Java Web Framework request programmatically
Spark 框架有没有办法以编程方式触发请求?假设我们有
http.get("/hello/:route_param") { "Hello Spark!" }
如何调用它,使用适当的 path
、query
、body
等,例如:
http.call(
url = "/hello/alex?a=b",
body = "{ value: 20 }"
) // => "Hello Spark!"
P.S.
我需要它来添加批量 /batch
路由 - 因此可以使用其他路由和参数列表调用它并返回结果列表。
如果您所说的“以编程方式”是指“不启动 HTTP 服务器并执行 HTTP 请求”,那么我认为答案是 否。 Spark 不提供这种开箱即用的功能。
有一些可能的解决方法:
- 您可以在您的应用程序中启动 Spark 并触发 HTTP 请求。这种方法的一个例子是 integration test 我为我的 Spark add-on
写的
- 使用 MockRunner's Servlet module 创建一个(假的)
HttpServletRequest
。使用 RequestResponseFactory.create(HttpServletRequest)
将其变成 Spark Request
。响应也是如此。将 Spark Route
重构为单独的 class,并使用您刚刚创建的 Request
和 Response
变量调用它。
Spark 框架有没有办法以编程方式触发请求?假设我们有
http.get("/hello/:route_param") { "Hello Spark!" }
如何调用它,使用适当的 path
、query
、body
等,例如:
http.call(
url = "/hello/alex?a=b",
body = "{ value: 20 }"
) // => "Hello Spark!"
P.S.
我需要它来添加批量 /batch
路由 - 因此可以使用其他路由和参数列表调用它并返回结果列表。
如果您所说的“以编程方式”是指“不启动 HTTP 服务器并执行 HTTP 请求”,那么我认为答案是 否。 Spark 不提供这种开箱即用的功能。
有一些可能的解决方法:
- 您可以在您的应用程序中启动 Spark 并触发 HTTP 请求。这种方法的一个例子是 integration test 我为我的 Spark add-on 写的
- 使用 MockRunner's Servlet module 创建一个(假的)
HttpServletRequest
。使用RequestResponseFactory.create(HttpServletRequest)
将其变成 SparkRequest
。响应也是如此。将 SparkRoute
重构为单独的 class,并使用您刚刚创建的Request
和Response
变量调用它。