Skip to main content

Attribute Matchers

Attribute Matchers extend the capabilities of request matching by allowing more nuanced conditions than simple equality checks.

EqualMatcher

The EqualMatcher is used to specify that a request attribute must exactly match a given value. It is the default matcher for several request matchers, such as MethodMatcher.

from jj.matchers import equals

jj.match_method(equals("GET"))

This configuration matches only HTTP GET requests, demonstrating the matcher's use in filtering requests by their method.

NotEqualMatcher

To exclude a specific value while matching request attributes, the NotEqualMatcher comes into play.

from jj.matchers import not_equals

jj.match_method(not_equals("GET"))

Here, any HTTP method other than GET will be matched, showcasing the matcher's utility in negating specific conditions.

ContainMatcher

The ContainMatcher checks if a request attribute contains a specific substring.

from jj.matchers import contains

jj.match_param("search", contains("banana"))

This example matches requests where the query parameter search includes the substring "banana," useful for partial text matching.

NotContainMatcher

Conversely, the NotContainMatcher ensures that a request attribute does not contain a specified substring.

from jj.matchers import not_contains

jj.match_param("search", not_contains("banana"))

In this case, it matches requests where the query parameter search does not include "banana," allowing for exclusion based on content.

RegexMatcher

For matching based on regular expressions, the RegexMatcher provides a powerful tool.

from jj.matchers import regex

jj.match_header("User-Agent", regex(r"^Mozilla/5.0.*"))

This matcher is employed to filter requests by the User-Agent header, specifically targeting those starting with "Mozilla/5.0," illustrating regex's flexibility in matching patterns.

ExistMatcher

To simply check for the presence of an attribute, the ExistMatcher is used.

from jj.matchers import exists

jj.match_header("Authorization", exists)

This example ensures a match if the Authorization header exists, regardless of its value, highlighting the matcher's role in verifying attribute presence.