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

我正在使用restify构buildapis,它工作的很好。 但是我也需要在同一个应用程序中渲染一些网页。

有没有可能我可以在一个应用程序中使用快递和一起考虑?

这是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中创buildexpress服务器?

谢谢

对于所有意图和目的来说,restify和express不能共存于同一个节点进程中,因为不幸的原因,它们都试图覆盖http请求/响应API的原型,并且最终会产生不可预知的行为什么。 我们可以安全地在快速应用程序中使用restify客户端,但不能使用两台服务器。

我认为,像expression一样,简单地创build一个函数,你可以使用它作为请求处理程序。 尝试这样的事情:

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

如果你需要REST API和普通的网页,我不认为你需要坚持下去。 你总是可以使用快递,并build立你的API,而不是restify,因为快递可以做几乎所有的事情restification。

我会用一个本地api服务器和一个express代理路由来解决这个问题。 也许不是带有一点延迟的最好方法,但是如何将你的web框架与你的api分开是一个可能的解决scheme。

如果你需要做一个REST API和一个Web应用程序,我build议你使用一个适用于Express的框架。

我创build了rode框架,它非常适合与REST协同工作,并可以与Express协同工作。