The tutorial here Getting started · ArangoDB v3.4.0 Documentation uses this code:
// continued
router.post('/sum', function (req, res) {
const values = req.body.values;
res.send({
result: values.reduce(function (a, b) {
return a + b;
}, 0)
});
})
.body(joi.object({
values: joi.array().items(joi.number().required()).required()
}).required(), 'Values to add together.')
.response(joi.object({
result: joi.number().required()
}).required(), 'Sum of the input values.')
.summary('Add up numbers')
.description('Calculates the sum of an array of number values.');
What is an example of a URI that supplies the expected parameters (two numbers)?
Assuming that your server instance runs on
localhost:8529
over HTTP, that the database is_system
and the mount point of the Foxx service/getting-started
, then the URL of the/sum
endpoint is:http://localhost:8529/getting-started/sum
Note that the database
_system
is special: It is the default, which means you don't have to specify it explicitly. The following URL is equivalent:http://localhost:8529/_db/_system/getting-started/sum
Replace
_system
with the name of the actual database if the Foxx service is mounted in another one./sum
is a POST route (router.post(...)
) and the expected body (content/payload of the HTTP request) is described by the joi schema: A JSON object with the attribute namevalues
and as attribute value a number array (one or more numbers).With Curl, you can query the service like so:
curl --data "{\"values\":[5,6]}" http://localhost:8529/getting-started/sum
(The request method
-X POST
is inferred by Curl)The response is a JSON object with an attribute key
result
and the calculated number as attribute value:{"result":11}
If you try to access the URL in a browser instead, it will be a GET request (without payload) and fail with an HTTP error: 405 Method Not Allowed