我正在使用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中创建快速服务器?
由于
答案 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分离的问题。