所以我在Node JS中做了一个REST Api,现在我有一个阻止程序。
app.use('/api', router);
此代码确保每个网址都以api为前缀。现在如果我想在路径只是“/”时提供HTML文件呢?我应该创建另一个“快递”应用程序吗?我现在只在localhost工作,我必须做“node server.js”来启动服务器。我不能同时启动2台服务器,或者我可以吗?一个用于api:server.js,另一个用于代码的其余部分:client.js(这是一个坏名称,但无论如何。)。我对如何设置东西很困惑......
感谢您的帮助。
答案 0 :(得分:8)
您可以看到您使用api路由,很可能是为JSON内容提供服务。好吧,使用相同的机制,您可以配置路由器为特定路由提供任何其他类型的内容。
因此,如果您想为应用程序的根目录提供一些HTML内容,请说出您的Wiki页面或API文档,它就像这样简单:
app.get('/', function(req, res){
res.render('index.html');
});
当然,如果您只是渲染一个静态html页面,您也可以配置一个中间件来定义放置所有静态内容的位置。
app.use(express.static(path.join(__dirname, 'www')));
www
是您选择放置index.html
页面的目录。
话虽如此,如果您构建的是REST API,那么它可能会被多个其他应用程序重用,因此,客户端应用程序通常独立于REST API运行。某些客户端应用程序甚至可能不是Web应用程序(即Android,iOS,桌面应用程序等)。因此,在考虑在同一项目中开发Web客户端之前,您应该考虑到这一点。
但是没有什么能阻止您提供在同一项目/服务器中使用REST API的默认UI实现。是的,可以运行多个服务于不同应用程序的HTTP服务器。如果您为API使用单独的服务器(即CORS),则可能需要考虑一些因素。
如果您决定在同一个应用程序中提供所有内容,您可能需要确保设计中存在明显的分离,使客户端应用程序消耗并使用其余层,就好像它是独立的一样。您应该将REST层的路由与用于客户端的路由隔离开来,以便以后如果要使客户端APP独立运行,那么就不会有问题。
express-namespace之类的内容如何帮助您整理路线?