Route API
Route instances provide access for arbitrary HTTP requests. This allows easy access to Foxx services and other HTTP APIs not covered by the driver itself.
route.route
route.route([path], [headers]): Route
Returns a new Route instance for the given path (relative to the current route) that can be used to perform arbitrary HTTP requests.
Arguments
-
path:
string(optional)The relative URL of the route.
-
headers:
Object(optional)Default headers that should be sent with each request to the route.
If path is missing, the route will refer to the base URL of the database.
Examples
const db = new Database();
const route = db.route("my-foxx-service");
const users = route.route("users");
// equivalent to db.route('my-foxx-service/users')
route.get
async route.get([path,] [qs]): Response
Performs a GET request to the given URL and returns the server response.
Arguments
-
path:
string(optional)The route-relative URL for the request. If omitted, the request will be made to the base URL of the route.
-
qs:
string(optional)The query string for the request. If qs is an object, it will be translated to a query string.
Examples
const db = new Database();
const route = db.route("my-foxx-service");
const response = await route.get();
// response.body is the response body of calling
// GET _db/_system/my-foxx-service
// -- or --
const response = await route.get("users");
// response.body is the response body of calling
// GET _db/_system/my-foxx-service/users
// -- or --
const response = await route.get("users", { group: "admin" });
// response.body is the response body of calling
// GET _db/_system/my-foxx-service/users?group=admin
route.post
async route.post([path,] [body, [qs]]): Response
Performs a POST request to the given URL and returns the server response.
Arguments
-
path:
string(optional)The route-relative URL for the request. If omitted, the request will be made to the base URL of the route.
-
body:
string(optional)The response body. If body is an object, it will be encoded as JSON.
-
qs:
string(optional)The query string for the request. If qs is an object, it will be translated to a query string.
Examples
const db = new Database();
const route = db.route("my-foxx-service");
const response = await route.post();
// response.body is the response body of calling
// POST _db/_system/my-foxx-service
// -- or --
const response = await route.post("users");
// response.body is the response body of calling
// POST _db/_system/my-foxx-service/users
// -- or --
const response = await route.post("users", {
username: "admin",
password: "hunter2"
});
// response.body is the response body of calling
// POST _db/_system/my-foxx-service/users
// with JSON request body {"username": "admin", "password": "hunter2"}
// -- or --
const response = await route.post(
"users",
{
username: "admin",
password: "hunter2"
},
{ admin: true }
);
// response.body is the response body of calling
// POST _db/_system/my-foxx-service/users?admin=true
// with JSON request body {"username": "admin", "password": "hunter2"}
route.put
async route.put([path,] [body, [qs]]): Response
Performs a PUT request to the given URL and returns the server response.
Arguments
-
path:
string(optional)The route-relative URL for the request. If omitted, the request will be made to the base URL of the route.
-
body:
string(optional)The response body. If body is an object, it will be encoded as JSON.
-
qs:
string(optional)The query string for the request. If qs is an object, it will be translated to a query string.
Examples
const db = new Database();
const route = db.route("my-foxx-service");
const response = await route.put();
// response.body is the response body of calling
// PUT _db/_system/my-foxx-service
// -- or --
const response = await route.put("users/admin");
// response.body is the response body of calling
// PUT _db/_system/my-foxx-service/users
// -- or --
const response = await route.put("users/admin", {
username: "admin",
password: "hunter2"
});
// response.body is the response body of calling
// PUT _db/_system/my-foxx-service/users/admin
// with JSON request body {"username": "admin", "password": "hunter2"}
// -- or --
const response = await route.put(
"users/admin",
{
username: "admin",
password: "hunter2"
},
{ admin: true }
);
// response.body is the response body of calling
// PUT _db/_system/my-foxx-service/users/admin?admin=true
// with JSON request body {"username": "admin", "password": "hunter2"}
route.patch
async route.patch([path,] [body, [qs]]): Response
Performs a PATCH request to the given URL and returns the server response.
Arguments
-
path:
string(optional)The route-relative URL for the request. If omitted, the request will be made to the base URL of the route.
-
body:
string(optional)The response body. If body is an object, it will be encoded as JSON.
-
qs:
string(optional)The query string for the request. If qs is an object, it will be translated to a query string.
Examples
const db = new Database();
const route = db.route("my-foxx-service");
const response = await route.patch();
// response.body is the response body of calling
// PATCH _db/_system/my-foxx-service
// -- or --
const response = await route.patch("users/admin");
// response.body is the response body of calling
// PATCH _db/_system/my-foxx-service/users
// -- or --
const response = await route.patch("users/admin", {
password: "hunter2"
});
// response.body is the response body of calling
// PATCH _db/_system/my-foxx-service/users/admin
// with JSON request body {"password": "hunter2"}
// -- or --
const response = await route.patch(
"users/admin",
{
password: "hunter2"
},
{ admin: true }
);
// response.body is the response body of calling
// PATCH _db/_system/my-foxx-service/users/admin?admin=true
// with JSON request body {"password": "hunter2"}
route.delete
async route.delete([path,] [qs]): Response
Performs a DELETE request to the given URL and returns the server response.
Arguments
-
path:
string(optional)The route-relative URL for the request. If omitted, the request will be made to the base URL of the route.
-
qs:
string(optional)The query string for the request. If qs is an object, it will be translated to a query string.
Examples
const db = new Database();
const route = db.route("my-foxx-service");
const response = await route.delete();
// response.body is the response body of calling
// DELETE _db/_system/my-foxx-service
// -- or --
const response = await route.delete("users/admin");
// response.body is the response body of calling
// DELETE _db/_system/my-foxx-service/users/admin
// -- or --
const response = await route.delete("users/admin", { permanent: true });
// response.body is the response body of calling
// DELETE _db/_system/my-foxx-service/users/admin?permanent=true
route.head
async route.head([path,] [qs]): Response
Performs a HEAD request to the given URL and returns the server response.
Arguments
-
path:
string(optional)The route-relative URL for the request. If omitted, the request will be made to the base URL of the route.
-
qs:
string(optional)The query string for the request. If qs is an object, it will be translated to a query string.
Examples
const db = new Database();
const route = db.route("my-foxx-service");
const response = await route.head();
// response is the response object for
// HEAD _db/_system/my-foxx-service
route.request
async route.request([opts]): Response
Performs an arbitrary request to the given URL and returns the server response.
Arguments
-
opts:
Object(optional)An object with any of the following properties:
-
path:
string(optional)The route-relative URL for the request. If omitted, the request will be made to the base URL of the route.
-
absolutePath:
boolean(Default:false)Whether the path is relative to the connection’s base URL instead of the route.
-
body:
string(optional)The response body. If body is an object, it will be encoded as JSON.
-
qs:
string(optional)The query string for the request. If qs is an object, it will be translated to a query string.
-
headers:
Object(optional)An object containing additional HTTP headers to be sent with the request.
-
method:
string(Default:"GET")HTTP method of this request.
-
timeout:
number(optional)A non-negative amount of milliseconds after which the request will be aborted. Note that ArangoDB may continue processing the request even after it has timed out.
-
Examples
const db = new Database();
const route = db.route("my-foxx-service");
const response = await route.request({
path: "hello-world",
method: "POST",
body: { hello: "world" },
qs: { admin: true }
});
// response.body is the response body of calling
// POST _db/_system/my-foxx-service/hello-world?admin=true
// with JSON request body '{"hello": "world"}'