pub struct MockingPlugin {
delay: Duration,
response_status: u16,
content_type: Template,
response_example: Template,
response_headers: Vec<(String, Template)>,
with_mock_header: bool,
}Expand description
Builds a mock response: optional delay, then status + headers + body.
The body and string header values support {{namespace.path}}
references plus legacy $var interpolation.
Fields§
§delay: Duration§response_status: u16§content_type: TemplateSupports {{namespace.path}} references (no legacy $var
interpolation — mocking’s content_type never supported it, so this
sweep must not start). The supported_content_type allowlist below is
only enforced when the configured value is a literal (no {{...}}
references) — a templated value is resolved per request and cannot be
checked at load time.
response_example: TemplateBody template: supports {{namespace.path}} references and legacy
$var interpolation (see Template::render_with_legacy).
response_headers: Vec<(String, Template)>Lowercased header name → value template.
with_mock_header: boolImplementations§
Source§impl MockingPlugin
impl MockingPlugin
Sourcepub fn from_config(config: &HashMap<String, Value>) -> Result<Self, String>
pub fn from_config(config: &HashMap<String, Value>) -> Result<Self, String>
Builds the plugin from node config.
Accepted keys:
response_example(string, required): response body; supports{{namespace.path}}references plus legacy$varinterpolation (e.g.$uri,$arg_name).response_status(integer >= 100, default200).content_type(string, defaultapplication/json;charset=utf8): supports{{namespace.path}}references; a literal value’s base type must be one ofapplication/json,application/xml,text/plain,text/html,text/xml(a templated value is resolved per request and is not checked at load time).response_headers(map{name: value}or array[{name, value}]): extra response headers; string values support{{namespace.path}}references plus legacy$varinterpolation.with_mock_header(bool, defaulttrue): addsx-mock-by: featherbit-mocking.delay(number, seconds, may be fractional, default0): sleep before responding.response_schema: not implemented — rejected at config load (deviation from APISIX).
type: mocking
config:
response_status: 200
content_type: application/json;charset=utf8
response_example: '{"user": "$arg_name", "path": "$uri"}'
response_headers:
x-mock-env: staging
delay: 0.2Trait Implementations§
Source§impl Plugin for MockingPlugin
impl Plugin for MockingPlugin
Source§fn plugin_type(&self) -> &str
fn plugin_type(&self) -> &str
Source§fn execute<'life0, 'async_trait>(
&'life0 self,
ctx: Context,
) -> Pin<Box<dyn Future<Output = Result<PluginOutput, PluginExecutionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn execute<'life0, 'async_trait>(
&'life0 self,
ctx: Context,
) -> Pin<Box<dyn Future<Output = Result<PluginOutput, PluginExecutionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Executes the plugin logic against the request/response context. Read more
Source§fn reads_response_body(&self) -> bool
fn reads_response_body(&self) -> bool
Whether this configured instance reads
context.response.body. Read moreSource§fn cache_target(&self) -> Option<CacheTarget>
fn cache_target(&self) -> Option<CacheTarget>
The cache backend this node writes to, if it is a
proxy-cache half. Read moreAuto Trait Implementations§
impl Freeze for MockingPlugin
impl RefUnwindSafe for MockingPlugin
impl Send for MockingPlugin
impl Sync for MockingPlugin
impl Unpin for MockingPlugin
impl UnsafeUnpin for MockingPlugin
impl UnwindSafe for MockingPlugin
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§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
Mutably borrows from an owned value. Read more
§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>
Converts
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>
Converts
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