News KrakenD Enterprise v2.6 released with OpenTelemetry, FIPS-140, gRPC server and more

Enterprise Documentation

Recent changes

You are viewing a previous version of KrakenD Enterprise Edition (v1.3) , go to the latest version

Response content types

Document updated on Mar 8, 2019

KrakenD supports sending responses back to the client using content types other than JSON. The list of supported content types depends on the router package used.

Supported encodings

The gateway can work with several content types, even allowing your clients to choose how to consume the content. The following output_encoding strategies are available to choose for every an endpoint:

  • json: The endpoint always return a response in JSON format to the client.
  • negotiate: Allows the client to choose by parsing its Accept header. KrakenD can return:
    • JSON
    • XML
    • RSS
    • YAML.
  • string: Treat the whole response as a simple string
  • no-op: No encoding, no decoding. See its documentation.

Each endpoint declaration is able to define which encoder should be used, as shown in this example. By default, when the output_encoding is omitted, KrakenD falls back to JSON:

...
"endpoints": [
{
  "endpoint": "/a",
  "output_encoding": "negotiate",
  "backend": [
    {
      "url_pattern": "/a"
    }
  ]
},
{
  "endpoint": "/b",
  "output_encoding": "string",
  "backend": [
    {
      "url_pattern": "/b"
    }
  ]
},
{
  "endpoint": "/c",
  "backend": [
    {
      "url_pattern": "/c"
    }
  ]
}
...

Notice that endpoint /c uses JSON as no encoding has been defined.

Using other routers (Lura Project)

If instead of the KrakenD API Gateway, which uses internally the gin router, you decide to build your own custom gateway using the Lura Project, the following routers and output encodings are available:

Gin

The gin-based KrakenD router includes these output encodings:

  • json
  • string
  • negotiate
  • no-op

Mux-based

The mux based routers supported by Lura are:

  • Mux
  • Gorilla
  • Negroni
  • Chi
  • httptreemux

and they include these output encodings:

  • json
  • string
  • no-op

See the list of Lura supported routers.

Scarf

Unresolved issues?

The documentation is only a piece of the help you can get! Whether you are looking for Open Source or Enterprise support, see more support channels that can help you.