Webservice Response
The Webservice Response op allows the rule to control the HTTP response params in webservice rules.
The final response is built from stash variables. This op will convert the input response YAML into stash parameters that will call the corresponding response methods.
This op has no effect on rule types different from Webservice rules.
Read more on Webservice Rules to better understand the context behind this op.
Response YAML configuration¶
The only configuration parameter for this op
is a YAML field called Response
.
The YAML response is a map/dictionary data structure (also called hash). The following keys are valid:
body:
data:
headers:
cookies:
location:
status:
Using variables in the response¶
Stash variables can used anywhere in the YAML:
data: my_key: ${some_stash_variable} your_location: ${ws_request.location}
body:
(mutually exclusive with 'data:')¶
The body:
is a string that will be sent back to the webservice
requestor as is. This is the recommended response when sending
text data or file contents.
Warning
The data:
and body:
entries are mutually exclusive.
data:
(mutually exclusive with 'body:')¶
Holds a key-value map of data for a JSON, XML or YAML response.
For example, the following response YAML:
data: name: Me address: 123 Elm St.
Will yield the following Response JSON:
HTTP/1.1 200 OK Cache-Control: no-cache Pragma: no-cache Content-Type: application/json; charset=utf-8 { "name": "Me", "address": "123 Elm St." }
Warning
The data:
and body:
entries are mutually exclusive.
headers:
¶
A key-value map of headers to be sent as a response:
headers: content_type: application/csv Content-Disposition: attachment;filename=example.csv
The keys will be capitalized and spaces and underscores will be converted to dashes, to make them compatible with the HTTP protocol and web standards.
cookies:
¶
This is a header helper to make it easy to send cookies as a response.
cookies: my-cookie: value: my cookie value expires: +3M # relative or just a date max-age: +2D # same as expires, but relative path: / # cookie only returned to matching paths domain: mydomain # controls which domains will get the cookie secure: 1 httponly: 1 # makes the cookie unnacessible through Javascript
content_type:
¶
This will set the Content-Type
response header.
It's a shortcut to headers: { content_type: ... }
.
content_type: application/json data: somekey: 123
status:
¶
Sets the response HTTP status.
Typically, one does not need to set the status, as this is done automatically by the Clarive server when generating the final webservice response.
If a value is set, it will overwrite the server response.
Be aware setting an incorrect HTTP status may cause undesired behavior at any of the endpoints along the request-response path.
location:
¶
Sets the location response header.
This is just a shortcut to headers: { location: .... }
Webservice Request URL¶
To further control the response, it's important to use the correct calling URL to the webservice rule.
The meaning of the data:
(and body:
) parameters depend
on the request URL format path part to the rule. This means
the same rule could be called with different data format
requests: json
, xml
, raw
.
Meanings of the data:
parameter:
https://clariveserver/rule/raw/
: YAMLhttps://clariveserver/rule/json/
: JSONhttps://clariveserver/rule/xml/
: XML
Meanings of the body:
parameter:
https://clariveserver/rule/raw/
: YAMLhttps://clariveserver/rule/json/
: not usedhttps://clariveserver/rule/xml/
: the string contents of body is wrapped within the following XML template<clarive>(body)</clarive>
, and body will be translated to the corresponding data structure.