将Express.js-REST-Endpoint与流星应用程序集成

时间:2017-08-29 11:46:56

标签: javascript node.js rest express meteor

我有一个棘手的情况:我目前正在构建一个完整的流星特色应用程序。但出于自动化原因,我还需要将一些功能作为REST服务公开(第三方应用程序应该能够通过REST插入和接收数据)。

express.js-package似乎是一个非常可靠的选项,可以将REST-Endpoint构建到node.js环境中,但我想知道如何将此端点集成到流星中。

我想要的是访问"正常"站点通过例如http://myfancysite.com/my-display-route,同时可以通过http://myfancysite.com/api/insert-crazy-data/访问我的REST-Endpoint。

"正常"可以通过启动Meteor时定义的端口访问站点。问题是,我必须为express.js 指定一个不同的端口来监听,我想要 - meteor和express - 共享同一个端口,因为我不想访问另一个端口上的REST-Endpoint。

这有可能吗? :d

这是我目前用于表达的一些代码。

//<meteor-root>\server\main.jsx

import { Meteor } from 'meteor/meteor';

// do some meteor things
...

//require express
var express = require('express');

//create application
var app = express();

//use environement defined port or 3000
var port = process.env.PORT || 3000;

//create router
var router = express.Router();

//define routes
...

//register all routes with '/api'
app.use('/api', router);

//start server
app.listen(port); // <= this should be the same port as the meteor application itself!
console.log('listening on port ' + port);

2 个答案:

答案 0 :(得分:4)

Meteor本质上是一个已经公开connect http服务器的节点应用程序,这意味着你可以简单地定义服务器路由:

defaultdict()

如果您坚持使用快递,那么您可以将快速路线注册为连接中间件,如下所示:

import { WebApp } from 'meteor/webapp';

WebApp.connectHandlers.use('/hello', (req, res, next) => {
  res.writeHead(200);
  res.end('Hello world from your server');
});

Etvoilà!

答案 1 :(得分:-1)

您不能简单地将Express与Meteor集成,也无法共享端口。

查看此问题的答案:make meteor restful api/web-service

基本上有一些Meteor软件包会为你提供这样的功能,例如https://atmospherejs.com/nimble/restivus