Matching Rules

Rules are stored in YAML files and follow the following format:

# rules/myRule.yaml
- path: https://example.com             # URL that this rule matches
  method: POST                          # (optional) HTTP method. Default: GET
  headers:                              # (optional) Headers to match on
    Authorization: Bearer myToken 
  response:
    status: 500                         # (optional) HTTP response status code. Default: 200
    headers:                            # (optional) Response headers
        Content-Type: application/json
    # There are 2 ways to define a response body
    body: Hello World                   # (optiona) Text is returned back
    # OR
    bodyFile: myResponse.json           # (optional) Contents of the file are returned back

# Single YAML file can contain however many rules
- path: "https://example.com/.*"        # Path can contain regular expressions
  response:
    status: 401

Matching

Matching is done by following principles:

  • URL is matched first and needs to match exactly (or match a regular expression).

  • If headers section is present.

    • All specified headers and their values have to be present in a request for it to match.

    • If an HTTP(s) request has extra headers that are not specified in the rule, the rule will still match as if those extra headers were not there.

  • If headers section is not present then all requests headers will match (assuming that URL matched as well)

  • Request body is not matched at the moment and is ignored.

  • Matching stops at the first rule that fits the criteria. If you have multiple rules that match, only one of them will be used.

Last updated

Was this helpful?