节点js在一个应用程序中使用express和restify

时间:2013-12-02 05:31:39

标签: node.js express restify

我正在使用restify建筑api,效果很好。但我需要在同一个应用程序中渲染一些网页。

我可以在一个应用程序中一起使用express和restify吗?

这是app.js中的restify服务器代码

var restify = require('restify');
var mongoose = require('mongoose');


var server = restify.createServer({
    name : "api_app"
});

server.use(restify.queryParser());
server.use(restify.bodyParser());
server.use(restify.CORS());
mongoose.connect('mongodb://localhost/db_name');
server.get('/', routes.index);

server.post('/api_name', api.api_name);


server.listen(8000 ,"localhost", function(){
    console.log('%s listening at %s ', server.name , server.url);
});

如何在同一个app.js中创建快速服务器?

由于

5 个答案:

答案 0 :(得分:7)

对于所有意图和目的,restify和express不能在同一节点进程中共存,因为不幸的原因,他们都试图覆盖http请求/响应API的原型,并最终导致不可预测的行为一个人做了什么。我们可以安全地在快递应用程序中使用restify客户端,但不能在两台服务器上使用。

答案 1 :(得分:3)

我认为像快递一样,只需创建一个可以用作请求处理程序的函数。尝试这样的事情:

var express = require('express'),
    restify = require('restify'),
    expressApp = express(),
    restifyApp = restify.createServer();

expressApp.use('/api', restifyApp); // use your restify server as a handler in express
expressApp.get('/', homePage);

expressApp.listen(8000);

答案 2 :(得分:1)

如果您需要REST API和普通网页,我认为您不再需要坚持解决问题。你可以随时使用express,并在其上构建你的API而不是restify,因为express几乎可以做所有事情。

答案 3 :(得分:0)

如果您需要执行REST API和Web应用程序,我建议您使用适用于Express的框架。

我创建了rode框架,非常适合使用REST并与Express配合使用。

答案 4 :(得分:0)

我会用本地api服务器和快速代理路由来解决这个问题。也许这不是延迟时间最好的方法,但可以解决如何将网页框架与api分离的问题。