8

From Spark Java documentation:

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

And from Route's JavaDoc:

@return The content to be set in the response

So what's the difference? Could someone explain to me pls?

FuzzY
  • 660
  • 8
  • 23

3 Answers3

7

An actual difference however is that response.body() accepts only String, while in the callback you can return any object that can be serialized to String and most importantly streams.

response.body() should be mostly used in exception handlers and after filters, and the callback return in normal routes.

k.liakos
  • 639
  • 6
  • 11
1

As you've pointed out, they both can be used to set the response body. I think the @return is part of a typical http endpoint.

response.body() is useful for exception handling.

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

Sparkjava is a bare bones framework and it's meant to be built on top of. response.body() makes sparkjava easily extensible in contexts where you don't have access to the "return" object.

thebiggestlebowski
  • 2,610
  • 1
  • 33
  • 30
1

There's really no difference on what it does, but they both exist so it's easy to set the response body in different contexts. For example you could use response.body in an exception handler or even filter, but as you may notice, the return way is "nicer" in a route declaration.

Pablo Matias Gomez
  • 6,614
  • 7
  • 38
  • 72