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.
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"}'