This is best practice and so the E2E Bridge will know, which content format has been send and which content format to provide as response. At the moment, the E2E Bridge supports application/json and text/xml content types for responses (Accept header) and requests (Content-Type header).
The full matching is done in a "best effort" manner. Given the type format
To determine the format, the Bridge will take into account the quality factor and the order of the accept headers list.<type>/<subtype>[+<suffix>][; paramName=paramValue]*
, the Bridge first disregards the type and parameters. Then it checks, if the subtype is JSON or XML. If the subtype doesn't match with the supported types, it tries the suffix.
Examples
MIME String | Deduced Type |
---|---|
text/plain; charset=utf-8 | - |
application/json | JSON |
application/json+xml | JSON |
application/vnd.github+json | JSON |
application/vnd.github.v3.raw+json | JSON |
application/vnd.github.v3.raw+xml | XML |
text/xml; charset=utf-8 | XML |
application/soap+xml | XML |
Arrays
Having an array as output may lead to interoperability problems. There are also known vulnerabilities in browsers regarding top-level JSON arrays.
In case of an array as output parameter, the array will be wrapped in an enclosing XML element, if you choose text/xml for your response, nevertheless. The name of the element is deduced from the output parameter name.
<supportCases>
<SupportCase id="000089c00002cb0d2e5ea" customerID="4711" customerName="Wishes Unltd" [...]></SupportCase>
<SupportCase id="0089c00000fccd3bae4d4" customerID="4711" customerName="Wishes Unltd"
[...]
></SupportCase> <SupportCase id="170324000026a400000dd" customerID="4712" customerName="AllYouWant AG"
[...]
></SupportCase> <SupportCase id="70fb1000026a400002e18" customerID="4712" customerName="AllYouWant AG"
[...]
></SupportCase></supportCases>
HTTP Status Codes
For HTTP success status codes (2xx), it may be doubtful which status code is return on a specific combination of REST operation and parameter. Find below a list that describes which status codes are returned under which conditions.
Order | Condition | Status Code Returned |
---|---|---|
1. | no output parameter | 204 (= no content) |
2. | POST request | 201 (= created) |
3. | else | 200 (= OK) |