This example demonstrates how to return a file in a form-data type HTTP multipart
response while also transferring data of other types in the same message response.
Example multipart response
In this sample REST function there is an example of a multipart response. The
RETURNS clause of the function has three return values: an
INTEGER,STRING, and TEXT. The
INTEGER is defined with the attribute WSHeader, so its value is sent in a
HTTP header. The STRING and TEXT type have no
WSHeader attributes, so therefore values are sent in the response body.
The TEXT return value is defined with the WSName attribute to identify
it by the name "txt_file" instead of the DVM default name.
A variable (t) is defined as type TEXT and located
in memory.
The readFile() method reads the contents of a text file
("README.txt") into variable t.
PUBLIC FUNCTION help2()
ATTRIBUTES (WSGet,
WSPath = "/help2")
RETURNS (INTEGER ATTRIBUTES(WSHeader),
STRING,
TEXT ATTRIBUTES(WSName = "txt_file") )
DEFINE t TEXT
LOCATE t IN MEMORY
CALL t.readFile("README.txt")
RETURN 3, "hello world", t
END FUNCTION
Output of multipart HTTP response
In the output the header is given the default name, "rv0", at runtime.
In the multipart response parts are combined into one or more sets of data in the body.
Parts are separated by boundaries, "--MIME_boundary" in the output example.
The text file part is identified by the name ("txt_file")