The App Hook¶
In JavaScript the app hook is based on
JSGI which provides a common interface
for JavaScript web application development.  The app script must export a
function named app that accepts a request object and returns a
response object.
export.app = function(request) {
  // handle the request and return a response
}
The function must be exported from a file named main.js in a named
application directory.  Application directories live under the
scripts/apps directory in the root of the data directory:
GEOSERVER_DATA_DIR/
  ...
  scripts/
    apps/
      app1/
        main.js
        ...
      app2/
        main.js
        ...
The application is web accessible from the path /script/apps/{app} where
{app} is the name of the application. All requests that start with this path
are dispatched to the app function in main.js.
Hello World Example¶
In this example a simple “Hello World” application is built.  The first step is
to create a directory for the app named hello:
cd $GEOSERVER_DATA_DIR/scripts/apps
mkdir hello
Next step is to create the main.js file:
cd hello
touch main.js
Within the app function the following things will happen:
- Report an HTTP status code of 200
 - Declare the content type of the response, in this case “text/plain”
 - Generate the body of response, in this case the string “Hello World”
 
This is accomplished with the following code:
export.app = function(request) {
  return {
    status: 200, // step 1
    headers: {"Content-Type": "text/plain"}, // step 2
    body: ["Hello World"] // step 3
  };
};
The body of the response shown above is an array.  In general, this can be any
object with a forEach method.  In this way, an app can returned chunked
content instead of returning the entire body content at once.