Module json_rewrite
http and std only.Expand description
Middleware that rewrites JSON request or response bodies on the fly, using
rama’s streaming JSON rewriter (rama_json::rewrite).
JsonRewriteLayer wraps a service and, for each response, checks the
Content-Type: an application/json or application/*+json body (that is
not content-encoded) is piped through a
JsonRewriter as it streams, applying
a handler to matched values; anything else is forwarded unchanged. Because
rewriting changes the body length, the layer drops the now-stale
Content-Length.
Handlers can replace or remove scalar values as well as whole object/array
subtrees.
JsonRequestRewriteLayer does the same for request bodies before the
wrapped service sees the request.
The body adapter, JsonRewriteBody, is also usable on its own - e.g.
composed with MapResponseBodyLayer or
MapRequestBodyLayer -
when you already handle the header concerns yourself.
§Handlers
The handler is any type implementing
JsonValueHandler. The layer
requires it to be Clone (it is cloned per body, so each request/response
rewrites with fresh handler state) and Send. A plain data struct fits
naturally, since the rewriter is owned and only touched through &mut self
while the body is polled.
When the handler accumulates state, recover it once the body finishes
via JsonRewriteBody::on_end.
§Encoding
The rewriter sees raw bytes, so a compressed (Content-Encoding) body is
skipped. Place this layer after a decompression layer if you need to
rewrite compressed requests or responses.
Structs§
- Json
Request Rewrite - Rewrites JSON request bodies before they reach the underlying service,
using rama’s streaming
JsonRewriter. - Json
Request Rewrite Layer - Layer that applies
JsonRequestRewriteto requests before they reach the wrapped service. - Json
Rewrite - Rewrites JSON response bodies of the underlying service, using rama’s
streaming
JsonRewriter. - Json
Rewrite Body - A body that feeds the inner body’s bytes through a
JsonRewriter, emitting rewritten chunks as they become available. - Json
Rewrite Layer - Layer that applies
JsonRewriteto the responses of the wrapped service.