pub struct GrpcWeb {
pub enabled: bool,
pub transcoding: Option<GrpcWebTranscoding>,
}Expand description
Route-scoped gRPC-Web policy (DW-101, routes[].grpc_web).
When enabled, the gateway translates gRPC-Web framing (the browser- friendly variant that replaces HTTP/2 trailers with a trailing frame) to native gRPC for the upstream, and wraps the native gRPC response back into gRPC-Web framing for the browser. Streaming (server-streaming and bidi) is supported: each upstream data chunk becomes its own gRPC-Web data frame, and the trailers become a final gRPC-Web trailer frame.
When transcoding is enabled, the gateway additionally accepts
plain JSON requests (Content-Type: application/json) and translates
them to protobuf wire bytes for the upstream, and translates the
protobuf response back to JSON. The mapping is driven by .proto
descriptors supplied via config.
The block parses and validates in every build (no cargo feature);
the runtime framing/transcoding translation is scaffolded and not
yet dispatched from the request path. See GrpcWebTranscoding and
GrpcWebDescriptor.
Fields§
§enabled: boolMaster switch. Default false: the gRPC-Web block is inert even when present (allows staged rollout). When true, the gateway translates gRPC-Web framing to native gRPC on the forward path and back on the response path.
transcoding: Option<GrpcWebTranscoding>JSON-to-gRPC transcoding configuration. When enabled, the gateway accepts JSON requests and translates them to protobuf using the supplied .proto descriptors. Absent (the default): only gRPC-Web framing translation runs (no JSON transcoding).
Trait Implementations§
Source§impl<'de> Deserialize<'de> for GrpcWeb
impl<'de> Deserialize<'de> for GrpcWeb
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for GrpcWeb
impl JsonSchema for GrpcWeb
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreimpl StructuralPartialEq for GrpcWeb
Auto Trait Implementations§
impl Freeze for GrpcWeb
impl RefUnwindSafe for GrpcWeb
impl Send for GrpcWeb
impl Sync for GrpcWeb
impl Unpin for GrpcWeb
impl UnwindSafe for GrpcWeb
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more