ArangoDB Foxx 微服务入门教程:此示例的工作 URI 是什么?

ArangoDB Foxx Microservices Getting Started tutorial: what is a working URI for this example?

这里的教程Getting started · ArangoDB v3.4.0 Documentation使用了这段代码:

// 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.');

提供预期参数(两个数字)的 URI 示例是什么?

假设您的服务器实例通过 HTTP 在 localhost:8529 上运行,数据库是 _system 并且 Foxx 服务的安装点是 /getting-started,那么 URL /sum 端点的是:

http://localhost:8529/getting-started/sum

请注意数据库 _system 是特殊的:它是默认的,这意味着您不必明确指定它。下面的URL是等价的:

http://localhost:8529/_db/_system/getting-started/sum

如果 Foxx 服务挂载在另一个数据库中,请将 _system 替换为实际数据库的名称。

/sum 是一个 POST 路由(router.post(...))并且预期的主体(HTTP 请求的 content/payload)由 joi 模式描述:A JSON 具有属性名称 values 的对象和作为属性值的数字数组(一个或多个数字)。

使用 Curl,您可以像这样查询服务:

curl --data "{\"values\":[5,6]}" http://localhost:8529/getting-started/sum

(请求方式-X POST由Curl推断)

响应是一个 JSON 对象,具有属性键 result 和计算出的数字作为属性值:

{"result":11}

如果您尝试在浏览器中访问 URL,它将是一个 GET 请求(没有负载)并且失败并出现 HTTP 错误:405 方法不允许