Skip to content

write

Writes content to the response body in a MARS Engine handler.

Syntax

js
write('key', 'text') // Writes a JSON response object {key: 'text'}
write(image); // If 'image' is a binary file writes the binary data with appropriate headers (eg. image/png, image/jpeg)
write('data', obj) // Serializes obj to JSON and returns it under the key 'data'

Details

The write function sets the response body for the current request.

  • Accepts strings, objects or binary.
  • If an object is passed, MARS Engine automatically serializes it to JSON and sets the Content-Type header to application/json.
  • If binary data is passed, it is written directly with no transformation trying to set the appropriate Content-Type.
  • Subsequent calls to write do not overwrite previous calls, they append if possible. Eg. You can't respond with two files in one response, so calling write twice leads to improper formatting.

Supported Types

Input TypeBehaviorContent-Type set
stringSends JSON text under the key 'unset key'application/json
BufferSends raw binary dataAs appropriate
objectSerializes to JSONapplication/json

Examples

Plain text response

js
response.setContentType('text/plain')
write('Hello, world!')

JSON response

js
write({ message: 'Success', userId: 42 })

Binary response

js
const image = fs.read("path/to/image.png")
write(image.data)

Text response with suggested filename

js
const csvData = "John,Doe,1980\nMary,Jane,1990"
response.setContentType('text/csv')
response.header("Content-Disposition", 'attachment;filename="data_export.csv"');
write(csv)

Combined with status

js
response.status(201)
write({ status: 'created', id: 42 })

Notes

  • You can use write() multiple times per request; it will append to any previous content if possible
  • Pair with response.status() and header() for full response control.