解析服务器:自定义端点/快速路由
Posted
技术标签:
【中文标题】解析服务器:自定义端点/快速路由【英文标题】:Parse Server: Custom endpoint / Express route 【发布时间】:2016-06-07 02:26:02 【问题描述】:在 Parse Server 中,应该将快速路由放在哪里?我发现它们只有在我将它们直接放入 index.js 时才有效,但这不是最好的地方,是吗?
我把它放在我的 cloud/main.js 中:
var express = require('express');
var app = express();
app.listen();
app.get('/test', function(req, res)
console.log("working?");
res.status(200).send('working?');
);
console.log("this file definitely runs");
我的控制台输出在启动服务器时显示“此文件肯定运行”,但是当我尝试访问 localhost:1337/test 时,它只是显示“无法获取 /test”。而如果我只放 app.get('/test', ...);在 index.js 中,它可以工作。我想这是因为我不允许创建另一个 express() 实例,也许有办法获取在 index.js 中创建的实例?
【问题讨论】:
【参考方案1】:我意识到您问的问题与我的回答所指的问题不同。万一你真的忘记了app.listen
,我会把它留在下面。
如果您要将路由导出到其他文件,则需要将 app
对象从您的 index.js
传递到路由文件。
我通常做的是三个抽象层次。首先,您有 index.js
,它声明了 app
和 express instances
。然后我有一个单独的文件,比如routeDefinitions.js
(我通常称这个索引并在我的应用程序之后命名起点)。
在routeDefinitions.js
内部,我使用来自index.js
的app
实例声明路由,结果如下:
app.js
:
var express = require('express');
var app = express();
var routes = require('./routeDefinitions')(app);
和routeDefinitions.js
:
var test = require('./test');
module.exports = function(app)
app.get('/test', test.working);
return app;
;
然后将每种类型的对象都放在它自己的路线文件中(假设您有用户、苹果和汽车,那么这些对象中的每一个都有自己的路线文件)。
test.js
:
module.exports.working = function(req, res)
console.log("working?");
res.status(200).send('working?');
;
您需要通过调用
app.listen
来启动您的服务器,请参阅Hello World example。
您看到This definitely runs
是因为您确实在处理您的脚本,但是您没有在收听请求,因为您忘记启动您的快速服务器。
【讨论】:
谢谢,我试试看!即使添加了 app.listen(),它也不起作用。我添加“这肯定会运行”的原因是因为有时 node.js 在出现错误时会静默停止包含文件,所以我想确保它正在加载整个文件 哎呀,它失败了,但我认为那是因为 Parse Server。这是错误:textsaver.flap.tv/lists/zwo 它确实看起来是 Parse Server 中的一个问题。我对解析服务器没有任何经验。我没有看到任何明显的错误。由于您似乎正在使用示例项目,因此我建议您进行全新安装,仅使用必要的选项对其进行配置,一旦可行,就可以开始移动内容,确保一切都能与每一次更改保持一致。 我实际上需要启动一个新项目并采用上述架构。我找到了错误并编辑了答案,特别是我删除了app.use(routes);
行并将(app)
附加到var routes = require('./routeDefinitions')
。它现在应该可以工作了。
哇,非常感谢!这正是我一直在寻找的 :) 它现在可以工作了!以上是关于解析服务器:自定义端点/快速路由的主要内容,如果未能解决你的问题,请参考以下文章
将自定义中间件添加到 Laravel Passport 端点