response.body() 和回调返回的对象有什么区别?

What's the difference between response.body() and object returned by the callback?

来自 Spark Java documentation:

response.body("Hello");        // sets content to Hello

并且来自 Route's JavaDoc

@return The content to be set in the response

那有什么区别呢?有人可以给我解释一下吗?

正如您所指出的,它们都可用于设置响应正文。我认为 @return 是典型 http 端点的一部分。

response.body() 对于异常处理很有用。

exception(NotFoundException.class, (e, request, response) -> {
    response.status(404);
    response.body("Resource not found");
});

Sparkjava 是一个简单的骨架框架,它应该建立在 Sparkjava 之上。 response.body() 使 sparkjava 在您无权访问 "return" 对象的上下文中可以轻松扩展。

它的作用确实没有区别,但它们都存在,因此很容易在不同的上下文中设置响应正文。例如,您可以在异常处理程序甚至过滤器中使用 response.body,但您可能会注意到,return 方式在路由声明中是 "nicer"。

但实际的区别是 response.body() 仅接受 String,而在回调中您可以 return 任何可以序列化为 String 的对象,最重要的是流。

response.body() 应该主要用于异常处理程序和过滤器之后,回调 return 用于普通路由。