diff --git a/Documentation/UserManual/Foxx.md b/Documentation/UserManual/Foxx.md index c8778d0ff8..58351edbf2 100644 --- a/Documentation/UserManual/Foxx.md +++ b/Documentation/UserManual/Foxx.md @@ -170,6 +170,9 @@ This is the complete path as supplied by the user as a String. @CLEARPAGE @copydetails JSF_foxx_BaseMiddleware_request_body +@CLEARPAGE +@copydetails JSF_foxx_BaseMiddleware_request_rawBody + @CLEARPAGE @copydetails JSF_foxx_BaseMiddleware_request_params diff --git a/js/common/tests/shell-foxx-base-middleware.js b/js/common/tests/shell-foxx-base-middleware.js index 070dd4306c..e9f8cdd0fd 100644 --- a/js/common/tests/shell-foxx-base-middleware.js +++ b/js/common/tests/shell-foxx-base-middleware.js @@ -17,9 +17,15 @@ function BaseMiddlewareSpec () { }, testBodyFunctionAddedToRequest: function () { - request.requestBody = "test"; + request.requestBody = JSON.stringify({test: 123}); baseMiddleware(request, response, options, next); - assertEqual(request.body(), "test"); + assertEqual(request.body(), {test: 123}); + }, + + testRawBodyFunctionAddedToRequest: function () { + request.requestBody = JSON.stringify({test: 123}); + baseMiddleware(request, response, options, next); + assertEqual(request.rawBody(), JSON.stringify({test: 123})); }, testParamFunctionReturnsUrlParameters: function () { diff --git a/js/server/modules/org/arangodb/foxx/base_middleware.js b/js/server/modules/org/arangodb/foxx/base_middleware.js index 7c138fe5d1..7891c87e29 100644 --- a/js/server/modules/org/arangodb/foxx/base_middleware.js +++ b/js/server/modules/org/arangodb/foxx/base_middleware.js @@ -52,14 +52,28 @@ BaseMiddleware = function () { //////////////////////////////////////////////////////////////////////////////// /// @fn JSF_foxx_BaseMiddleware_request_body -/// @brief The superfluous `body` function +/// @brief Get the JSON parsed body of the request /// /// @FUN{request.body()} /// -/// Get the body of the request +/// Get the JSON parsed body of the request – if you need the raw version, please +/// refer to the `rawBody` function. //////////////////////////////////////////////////////////////////////////////// body: function () { + return JSON.parse(this.requestBody); + }, + +//////////////////////////////////////////////////////////////////////////////// +/// @fn JSF_foxx_BaseMiddleware_request_rawBody +/// @brief Get the raw body of the request +/// +/// @FUN{request.rawBody()} +/// +/// The raw request body, not parsed – just a String. +//////////////////////////////////////////////////////////////////////////////// + + rawBody: function () { return this.requestBody; },