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 没有问题,只是我理解教程有问题。对于处于我位置的其他人,以下是我没有正确理解的事情,解决后解决了我的问题。
API 选项卡,与教程中所说的相反,即使对于正常工作的服务,也会出现错误 "Failed to load API definition"。忽略该错误消息。我还没有使用 API 选项卡。
本教程引用了两个路径,“/hello-world”和“/getting-started”。这些用于端点 (URI) 和创建路由器,如下所示:
router.get('/hello-world', function (req, res) { ...
教程在这一点上并没有像它本来应该的那样清楚,但正如@camba1 指出的那样,服务端点最终将包含这两个元素:
192.168.1.1:8529/_db/_system/getting-started/hello-world .
在我看来,如果在没有路径的情况下创建路由器,这个非常基本的演示会更简单、更好:
router.get(function (req, res) {
在这种情况下,它默认为“/”路径。我认为这可以避免像我这样的初学者感到困惑。然后服务端点变得更简单。在我的例子中,端点(局域网中另一台计算机上的 Arango 运行)变为:
192.168.1.1:8529/_db/_system/getting-started
如果教程添加几句额外的句子来解释端点的构造方式,或者按照我上面的建议进行操作并简化一步,本教程将会得到改进。
在 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 没有问题,只是我理解教程有问题。对于处于我位置的其他人,以下是我没有正确理解的事情,解决后解决了我的问题。
API 选项卡,与教程中所说的相反,即使对于正常工作的服务,也会出现错误 "Failed to load API definition"。忽略该错误消息。我还没有使用 API 选项卡。
本教程引用了两个路径,“/hello-world”和“/getting-started”。这些用于端点 (URI) 和创建路由器,如下所示:
router.get('/hello-world', function (req, res) { ...
教程在这一点上并没有像它本来应该的那样清楚,但正如@camba1 指出的那样,服务端点最终将包含这两个元素:
192.168.1.1:8529/_db/_system/getting-started/hello-world .
在我看来,如果在没有路径的情况下创建路由器,这个非常基本的演示会更简单、更好:
router.get(function (req, res) {
在这种情况下,它默认为“/”路径。我认为这可以避免像我这样的初学者感到困惑。然后服务端点变得更简单。在我的例子中,端点(局域网中另一台计算机上的 Arango 运行)变为:
192.168.1.1:8529/_db/_system/getting-started
如果教程添加几句额外的句子来解释端点的构造方式,或者按照我上面的建议进行操作并简化一步,本教程将会得到改进。