@FunctionalInterface public interface ServiceCall<Request,Response>
A service call has a request and a response entity. Either entity may be NotUsed, if there is no entity associated with the call. They may also be an Akka streams Source, in situations where the endpoint serves a stream. In all other cases, the entities will be considered "strict" entities, that is, they will be parsed into memory, eg, using json.
Modifier and Type | Method and Description |
---|---|
default ServiceCall<Request,Response> |
handleRequestHeader(Function<RequestHeader,RequestHeader> handler)
Make any modifications necessary to the request header.
|
default <T> ServiceCall<Request,T> |
handleResponseHeader(BiFunction<ResponseHeader,Response,T> handler)
Transform the response using the given function that takes the response header and the
response.
|
default CompletionStage<Response> |
invoke()
Invoke the service call with unit id argument and a unit request message.
|
CompletionStage<Response> |
invoke(Request request)
Invoke the service call.
|
default ServiceCall<Request,akka.japi.Pair<ResponseHeader,Response>> |
withResponseHeader()
Allow handling of the response header.
|
CompletionStage<Response> invoke(Request request)
request
- The request entity.default CompletionStage<Response> invoke()
This should only be used when the request message is NotUsed.
default ServiceCall<Request,Response> handleRequestHeader(Function<RequestHeader,RequestHeader> handler)
For client service calls, this gives clients an opportunity to add custom headers and/or modify the request in some way before it is made. The passed in handler is applied before the header transformers configured for the descriptor/endpoint are applied.
For server implementations of service calls, this will be invoked by the server in order to
supply the request header. A new service call can then be returned that uses the header. The
header passed in to the handler by the service call can be anything, it will be ignored -
RequestHeader.DEFAULT
exists for this purpose. Generally, server implementations should
not implement this method directly, rather, they should use ServerServiceCall, which
provides an appropriate implementation.
handler
- A function that takes in the request header representing the request, and
transforms it.default <T> ServiceCall<Request,T> handleResponseHeader(BiFunction<ResponseHeader,Response,T> handler)
For client service calls, this gives clients an opportunity to inspect the response headers and status code. The passed in handler is applied after the header transformers configured for the descriptor/endpoint are applied.
For server implementations of service calls, this will be invoked by the server in order to give the service call an opportunity to supply the response header when it supplies the response, but only if the underlying transport supports sending a response header. Generally, server implementations should not implement this method directly, rather, they should use ServerServiceCall, which provides an appropriate implementation.
handler
- The handler.default ServiceCall<Request,akka.japi.Pair<ResponseHeader,Response>> withResponseHeader()
This converts the service call to one that returns both the response header and the response message.
This is simply a convenience method for invoking handleResponseHeader(Pair::create)
.