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

Posted

技术标签:

【中文标题】将 Express.js-REST-Endpoint 与 Meteor 应用程序集成【英文标题】:Integrate Express.js-REST-Endpoint with Meteor Application 【发布时间】:2018-02-06 20:44:41 【问题描述】:

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

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

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

“正常”站点可通过启动 Meteor 时定义的端口访问。问题是,我必须为 express.js 指定 一个不同的端口 来监听,并且我希望两者——meteor 和 express——共享同一个端口,因为我不想访问 REST - 不同端口上的端点。

这有可能吗? :D

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

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

【问题讨论】:

【参考方案1】:

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

import  WebApp  from 'meteor/webapp';

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

如果您坚持使用 express,那么您可以将您的 express 路由注册为连接中间件,如下所示:

import  Meteor  from 'meteor/meteor';
import  WebApp  from 'meteor/webapp';
import express from 'express';

const app = express();

app.get('/api', (req, res) => 
  res.status(200).json( message: 'Hello from Express!!!');
);

WebApp.connectHandlers.use(app);

等等!

【讨论】:

这似乎是我项目的可靠解决方案!我稍后会尝试那个!非常感谢! 这真的让我很开心,仍然不敢相信我以前没有遇到过WebApp 模块。

以上是关于将 Express.js-REST-Endpoint 与 Meteor 应用程序集成的主要内容,如果未能解决你的问题,请参考以下文章

如何将Ios文件上传到

Javascript 将正则表达式 \\n 替换为 \n,将 \\t 替换为 \t,将 \\r 替换为 \r 等等

如何将视频文件转换格式

sh 一个将生成CA的脚本,将CA导入到钥匙串中,然后它将创建一个证书并与CA签名,然后将其导入到

python怎么将0写入文件?

如何将CMD窗口背景改成透明?