ArangoDB:Foxx 微服务入门:404:errorMessage:未知路径

ArangoDB: getting started with Foxx Microservices: 404: errorMessage: unknown path

在 Foxx 微服务的入门部分使用 ArangoDB 文档 version 3.3 or version 3.4,我无法克服这个错误:

Failed to load API definition.

NetworkError when attempting to fetch resource. http://192.168.1.1:8529/_db/_system/_admin/aardvark/foxxes/docs/swagger.json?mount=/getting-started

该错误显示在服务的 API 选项卡上。按照教程安装我的服务后,我得到了描述的服务卡。我单击该卡片,然后单击 API 选项卡并显示上述错误。

为了消除拼写错误,我尝试从 ArangoDB 文档中复制并粘贴确切的文件内容并严格按照每个步骤操作,但我仍然遇到相同的错误。

我新创建的 getting-started 服务的信息选项卡包含以下信息:

Author:
Mount: /getting-started
Mode: Development
Version: Unknown
Version License: Unknown License
Path: /var/lib/arangodb3-apps/_db/_system/getting-started/APP

该示例仅包含两个文件,它们是:

manifest.json

{
  "engines": {
    "arangodb": "^3.0.0"
  },
  "main": "index.js"
}

index.js

'use strict';
const createRouter = require('@arangodb/foxx/router');
const router = createRouter();

module.context.use(router);

router.get('/hello-world', function (req, res) {
res.send('Hello World!');
})
.response(['text/plain'], 'A generic greeting.')
.summary('Generic greeting')
.description('Prints a generic greeting.');

固定的演示服务(例如 hello-fox 示例)可以正常工作。我收集了更多错误信息:

导航至 http://192.168.1.1:8529/getting-started

404: errorMessage "unknown path '/getting-started'"

导航至 http://192.168.1.1:8529/_db/_system/getting-started

404: errorMessage "unknown path '/getting-started'"

控制台还显示:

WARNING File not found "/getting-started": file "" does not exist in "/var/lib/arangodb3-apps/_db/_system/getting-started/APP/files".

本教程未指出另一个名为 getting-started 的文件或两个指定文件的另一个位置。我错过了什么?

此问题已根据@camba1 的有用评论得到解决。 Arango 没有问题,只是我理解教程有问题。对于处于我位置的其他人,以下是我没有正确理解的事情,解决后解决了我的问题。

  1. API 选项卡,与教程中所说的相反,即使对于正常工作的服务,也会出现错误 "Failed to load API definition"。忽略该错误消息。我还没有使用 API 选项卡。

  2. 本教程引用了两个路径,“/hello-world”和“/getting-started”。这些用于端点 (URI) 和创建路由器,如下所示:

    router.get('/hello-world', function (req, res) { ...

教程在这一点上并没有像它本来应该的那样清楚,但正如@camba1 指出的那样,服务端点最终将包含这两个元素:

192.168.1.1:8529/_db/_system/getting-started/hello-world .
  1. 在我看来,如果在没有路径的情况下创建路由器,这个非常基本的演示会更简单、更好:

    router.get(function (req, res) {

在这种情况下,它默认为“/”路径。我认为这可以避免像我这样的初学者感到困惑。然后服务端点变得更简单。在我的例子中,端点(局域网中另一台计算机上的 Arango 运行)变为:

192.168.1.1:8529/_db/_system/getting-started

如果教程添加几句额外的句子来解释端点的构造方式,或者按照我上面的建议进行操作并简化一步,本教程将会得到改进。