pub struct HttpRequest {Show 17 fields
pub method: Option<String>,
pub path: Option<String>,
pub query_string_parameters: Option<HashMap<String, Vec<String>>>,
pub headers: Option<HashMap<String, Vec<String>>>,
pub body: Option<Body>,
pub jwt: Option<Jwt>,
pub socket_address: Option<SocketAddress>,
pub not: Option<bool>,
pub secure: Option<bool>,
pub keep_alive: Option<bool>,
pub protocol: Option<String>,
pub path_parameters: Option<HashMap<String, ParameterValues>>,
pub cookies: Option<HashMap<String, String>>,
pub header_matchers: Option<HashMap<String, Vec<MatcherValue>>>,
pub query_string_parameter_matchers: Option<HashMap<String, Vec<MatcherValue>>>,
pub cookie_matchers: Option<HashMap<String, MatcherValue>>,
pub extra: Extra,
}Expand description
Matcher for an HTTP request. Uses builder methods for fluent construction.
§Example
use mockserver_client::HttpRequest;
let request = HttpRequest::new()
.method("POST")
.path("/api/users")
.header("Content-Type", "application/json")
.query_param("page", "1")
.body("{}");Serialize/Deserialize are implemented by hand (see below) rather than
derived, so the additive *_matchers fields can stand in for their plain
counterparts under the same wire key — the same shape the Go client uses.
Fields§
§method: Option<String>§path: Option<String>§query_string_parameters: Option<HashMap<String, Vec<String>>>Query-string parameters to match, multiple values per key (plain form).
headers: Option<HashMap<String, Vec<String>>>Headers to match, multiple values per key (plain form).
body: Option<Body>§jwt: Option<Jwt>§socket_address: Option<SocketAddress>§not: Option<bool>Negate the whole request matcher ("not": true).
secure: Option<bool>Match only requests received over TLS ("secure").
keep_alive: Option<bool>Match only keep-alive requests ("keepAlive").
protocol: Option<String>Match the request protocol (e.g. "HTTP_1_1", "HTTP_2", "HTTP_3").
path_parameters: Option<HashMap<String, ParameterValues>>Path parameters (/users/{id} style), multiple values per key.
Each key’s value is a ParameterValues, accepting both the plain
string-list form and the schema/nottable matcher form.
Cookies to match (single value per name, plain form).
header_matchers: Option<HashMap<String, Vec<MatcherValue>>>Header matchers whose values are taken verbatim, expressing a value that
the plain headers map cannot: one starting with ! or
?. When non-empty this REPLACES headers on the wire
under the same headers key. Additive — the plain map keeps its type and
meaning. Populate via header_matcher.
query_string_parameter_matchers: Option<HashMap<String, Vec<MatcherValue>>>Query-string parameter matchers. See header_matchers
and query_param_matcher.
Cookie matchers (single value per name). See
header_matchers and
cookie_matcher.
extra: ExtraForward-compatibility catch-all for request fields the typed model does
not yet name (e.g. clientCertificate, localAddress, remoteAddress).
Implementations§
Source§impl HttpRequest
impl HttpRequest
Sourcepub fn socket_address(self, socket_address: SocketAddress) -> Self
pub fn socket_address(self, socket_address: SocketAddress) -> Self
Set the downstream socket address to connect to.
Used by load-scenario steps (and forwarded/proxied requests) to direct
the rendered request at a specific host/port/scheme rather than relying
on the request’s Host header.
Sourcepub fn query_param(
self,
key: impl Into<String>,
value: impl Into<String>,
) -> Self
pub fn query_param( self, key: impl Into<String>, value: impl Into<String>, ) -> Self
Add a query string parameter (multiple values per key supported).
A leading ! in the value negates and a leading ? marks it optional —
the server’s marker syntax, and the existing meaning. To match a value
that literally starts with ! or ?, use
query_param_matcher with
MatcherValue::literal.
Sourcepub fn query_param_matcher(
self,
key: impl Into<String>,
value: MatcherValue,
) -> Self
pub fn query_param_matcher( self, key: impl Into<String>, value: MatcherValue, ) -> Self
Add a query string parameter matcher whose value is taken verbatim, so a
value starting with ! or ? means itself rather than being read as a
negation or optionality marker.
Use one style per field: once any query_param_matcher call is made, the
matcher map replaces the plain query_param map for
the whole queryStringParameters field on the wire, so a plain
query_param call made AFTER this one is ignored.
Sourcepub fn header(self, key: impl Into<String>, value: impl Into<String>) -> Self
pub fn header(self, key: impl Into<String>, value: impl Into<String>) -> Self
Add a header (multiple values per key supported).
A leading ! in the value negates and a leading ? marks it optional —
the server’s marker syntax, and the existing meaning. To match a value
that literally starts with ! or ?, use
header_matcher with MatcherValue::literal.
Sourcepub fn header_matcher(self, key: impl Into<String>, value: MatcherValue) -> Self
pub fn header_matcher(self, key: impl Into<String>, value: MatcherValue) -> Self
Add a header matcher whose value is taken verbatim, so a value starting
with ! or ? means itself rather than being read as a negation or
optionality marker.
Use one style per field: once any header_matcher call is made, the
matcher map replaces the plain header map for the whole
headers field on the wire, so a plain header call made AFTER this one
is ignored.
Sourcepub fn file_body(self, file_path: impl Into<String>) -> Self
pub fn file_body(self, file_path: impl Into<String>) -> Self
Set a file body (type “FILE”) with optional content type and template type.
Use Body::file for richer construction if you need content type or
template type set.
Sourcepub fn body_value(self, body: Body) -> Self
pub fn body_value(self, body: Body) -> Self
Set a pre-built Body value (use with Body::file for FILE bodies).
Sourcepub fn jwt(self, jwt: Jwt) -> Self
pub fn jwt(self, jwt: Jwt) -> Self
Set a JWT request matcher.
Serialised under the "jwt" key alongside method/path/headers.
§Example
use mockserver_client::{HttpRequest, Jwt};
let request = HttpRequest::new()
.method("GET")
.path("/secure")
.jwt(
Jwt::new()
.claim("sub", "user-123")
.claim("role", "!admin")
.issuer("https://issuer.example.com")
.algorithm("RS256"),
);Sourcepub fn keep_alive(self, keep_alive: bool) -> Self
pub fn keep_alive(self, keep_alive: bool) -> Self
Match only keep-alive requests.
Sourcepub fn protocol(self, protocol: impl Into<String>) -> Self
pub fn protocol(self, protocol: impl Into<String>) -> Self
Match the request protocol (e.g. "HTTP_1_1", "HTTP_2").
Sourcepub fn path_param(
self,
key: impl Into<String>,
value: impl Into<String>,
) -> Self
pub fn path_param( self, key: impl Into<String>, value: impl Into<String>, ) -> Self
Add a plain path parameter value (multiple values per key supported).
For schema/nottable matcher forms, set path_parameters
directly with a ParameterValues::Matcher.
Add a cookie to match (single value per name).
A leading ! in the value negates and a leading ? marks it optional —
the server’s marker syntax, and the existing meaning. To match a value
that literally starts with ! or ?, use
cookie_matcher with MatcherValue::literal.
Add a cookie matcher whose value is taken verbatim, so a value starting
with ! or ? means itself rather than being read as a negation or
optionality marker.
Use one style per field: once any cookie_matcher call is made, the
matcher map replaces the plain cookie map for the whole
cookies field on the wire, so a plain cookie call made AFTER this one
is ignored.
Sourcepub fn path_param_matcher(
self,
key: impl Into<String>,
value: MatcherValue,
) -> Self
pub fn path_param_matcher( self, key: impl Into<String>, value: MatcherValue, ) -> Self
Add a path parameter matcher whose value is taken verbatim, so a value
starting with ! or ? means itself rather than being read as a
negation or optionality marker.
Path parameters are carried as ParameterValues; a literal value is
stored in the schema-matcher (object) form so the server reads it exactly
as written. Calling this for a key that already holds plain
path_param values REPLACES them with the matcher
form, so use one style per key.
Trait Implementations§
Source§impl Clone for HttpRequest
impl Clone for HttpRequest
Source§fn clone(&self) -> HttpRequest
fn clone(&self) -> HttpRequest
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more