FLAT
CouperSevenval TechnologiesDocker ImageGithub
master
master
  • Changelog
  • FLAT
  • Administration
    • Configuration
    • Docker
    • Logging
  • Cookbook
    • Using the Built-in Mocking
    • Performing Additional Checks on JWT Access Tokens
    • Logging Custom Fields
    • Using Environment Variables
    • Handling Errors with an Error Flow
    • File Serving
    • Forwarding a Request to an Upstream API
    • Extracting Common Initialization Flow Tasks
    • Encoding and Decoding JWT
    • Passing Header Fields to the Client
    • How can I pass an arbitrary header field to an upstream system?
    • Performing Additional Checks on JWT Access Tokens
    • Proxying requests to Upstream APIs
    • Increasing the Request Timeout
    • How can I see what the client requested?
    • Using Swagger UI for API Documentation
    • Testing API Requests
    • Testing with Backend Requests
    • Testing Templates
    • Sending POST Requests
    • Processing Upstream Responses
    • Protecting Access using JWT Tokens
  • Reference
    • Configuration
    • Debugging
    • flat CLI
    • Flow
    • Variables
    • OpenAPI / Swagger Integration
    • OpenAPI
      • CORS - Cross-Origin Resource Sharing
    • OpenAPI
      • Differences from Swagger
    • OpenAPI
      • Mocking
    • OpenAPI
      • Routing
    • OpenAPI
      • Security
    • OpenAPI
      • Upstream APIs
    • OpenAPI
      • Validation
    • Flow Actions
      • assert Action
      • auth Action
      • backend-flow Action
      • copy Action
      • debug Action
      • dump Action
      • echo Action
      • error Action
      • eval Action
      • log Action
      • nameshave Action
      • pass-body Action
      • proxy-request Action
      • regex Action
      • request Action
      • requests Action
      • serve Action
      • set-config Action
      • set-env Action
      • set-response-headers Action
      • set-status Action
      • sub-flow Action
      • template Action
      • test-request Action
      • xslt Action
    • Functions
      • apply-codecs()
      • array-reverse()
      • array()
      • base64-decode()
      • base64-encode()
      • body()
      • calc-signature()
      • capitalize-first()
      • content()
      • decrypt-xml()
      • decrypt()
      • encrypt()
      • ends-with()
      • file-exists()
      • fit-document()
      • fit-log()
      • fit-serialize()
      • get-log()
      • has-class()
      • html-parse()
      • join()
      • json-doc()
      • json-parse()
      • json-stringify()
      • json-to-csv()
      • json-to-xml()
      • jwt-decode()
      • jwt-encode()
      • ldap-lookup()
      • ldap-query()
      • lookup()
      • matches()
      • md5()
      • replace()
      • sort()
      • split()
      • tolower()
      • toupper()
      • trim()
      • unixtime()
      • urldecode(), url-decode()
      • urlencode(), url-encode()
      • uuid3() and uuid4()
      • verify-signature()
      • verify-xmldsig()
      • xml-parse()
      • xml-to-json()
    • Templating
      • {{,}}
      • Comment {{// …}}
      • Dot {{.}}
      • Conditional `{{if <condition>}} … {{elseif <condition> }} … {{else}} … {{end}}
      • loop
      • ?? Operator
      • Object XML Notation (OXN)
      • Pair Producer {{: …}}
      • Placeholder
      • Template Variables
      • with
    • Testing
  • Tutorial
Powered by GitBook
On this page
  • Usage
  • origin
  • stripEndpoint
  • addPrefix
  • url
  • query
  • headers
  • options
  • Examples
  • See also

Was this helpful?

  1. Reference
  2. Flow Actions

proxy-request Action

Previouspass-body ActionNextregex Action

Last updated 5 years ago

Was this helpful?

The proxy-request action forwards the incoming request almost unmodified to an upstream system.

The HTTP method and the request body are taken as-is from the client request. Cookie, Authorization and any hop-by-hop header fields like Connection will be dropped automatically, the remaining header fields will be sent upstream.

The response body is written into fit://request/content/main where it can be directly accessed with the or the . Additional information about the response, such as headers and status code can be found in the .

Usage

Just like an ordinary the proxy-request can be configured using a with the following properties:

origin

Sets the origin of the upstream system. Either origin or url is required. Type: string.

stripEndpoint

To be used in connection with origin. If true, strips the endpoint path from the client request URL path before it is added to the upstream origin. Type: boolean, default: false

E.g.

basePath: /api
paths:
  /foo/bar:
  /wildcard/**

For the client request URL https://client.example.com/api/foo/bar, the path is stripped to /.

For the client request URL https://client.example.com/api/wildcard/path/to, the path is stripped to /path/to.

addPrefix

Inserts a path prefix before the given (client request URL) path, after possible endpoint stripping (see stripEndpoint). Type: string.

url

Sets the URL to the upstream system. Either url or origin is required.

query

headers

options

Note: that, with proxy-request, in contrast to request, the defaults for exit-on-error, validate-request and validate-response are true, if a definition is configured.

Examples

Using origin:

<flow>
  <proxy-request>
  {
    "origin": "https://example.com",
    "stripEndpoint": true,
    "addPrefix": "/path/to/api",

    "headers": {
      "X-API-Key": "foo42bar"
    },

    "options": {
      "definition": "upstream.yaml",
      "validate-response": "report-only"
    }
  }
  </proxy-request>
</flow>

With the client request URL http://client.example.com/my/api/foo/bar matching the swagger definition path

basePath: /my/api
paths:
  /foo/**:
    x-flat-flow: proxy.xml

the upstream request URL will be https://example.com/path/to/api/bar.

Using url:

<flow>
  <proxy-request>
  {
    "url": "https://example.com/api/",

    "headers": {
      "X-API-Key": "foo42bar"
    },

    "options": {
      "definition": "upstream.yaml",
      "validate-response": "report-only"
    }
  }
  </proxy-request>
</flow>

See also

Overrides the query part of the URL. See the for the query syntax.

Sets or removes request header fields. The syntax is the same as in the . To remove a header, set its value to "".

Sets request options. See the for valid options.

(reference)

Forwarding a Request to an Upstream API
request action
body
content function
request
JSON template
$upstream variable
request action
request action
request action options