On Tuesday, 19 June 2018 at 13:55:34 UTC, Steven Schveighoffer
wrote:
On 6/19/18 9:43 AM, Anton Fediushin wrote:
On Tuesday, 19 June 2018 at 08:56:05 UTC, Russel Winder wrote:
I would like to build a back-end server that performs some
processing on the body of the HTTP request it receives. To
begin with, I would like it to simply echo the request body
back to the client.
There is vibe.web.rest which covers 90% of everything one
might need for their back-end application. There's practically
no reason to bother with bodyReaders/Writers.
The one reason I found is that the REST interface must
serialize everything before returning.
For example, if you are looking for ALL the data from your
database, instead of streaming it while parsing the database,
you have to serialize the entire database to an in-memory
array, and return that, which the REST interface will then
serialize to JSON.
In my case, I had to output the data manually to avoid insane
memory consumption.
-Steve
Indeed, that's one of the cases where vibe.web.rest isn't as
helpful. Interesting thing is, vibe.web.web provides such
functionality (methods can return InputStream) even though:
Module vibe.web.web
Implements a declarative framework for building web interfaces.
This module contains the sister funtionality to the
vibe.web.rest module. While > the REST interface generator is
meant for stateless machine-to-machine communication, this
module aims at implementing user facing web services. Apart
from that, both systems use the same declarative approach.
I have no idea why machine-to-machine communication can't have
InputStream and machine-to-user can.