问题描述
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请求。这种方法的一个示例是我为我的Spark插件编写的integration test
- 使用MockRunner's Servlet module创建(伪)
HttpServletRequest
。使用RequestResponseFactory.create(HttpServletRequest)
将其转换为SparkRequest
。对于响应也是如此。将SparkRoute
重构为一个单独的类,并使用刚刚创建的Request
和Response
变量来调用它。