我需要创建一个NodeJS应用程序,它只用于公开REST API。当我使用Express生成器express myNodeApp
创建ExpressJS项目时,它会创建一个项目,将视图默认为.jade文件。
我可以创建并运行没有视图的NodeJS项目吗?我的NodeJS项目将公开另一个客户端应用程序将使用的REST服务。因此我的NodeJS项目不需要任何UI元素。还有package.json
或.bin/www
文件。我将在Azure云中托管我的NodeJS项目,我的客户端应用程序将使用来自云的公开服务。
答案 0 :(得分:1)
有关示例,请参阅此答案中的代码:
基本上剥离所有不必要的代码:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
app.post('/email', (req, res) => {
console.log(req.body.address);
res.json({ ok: true });
});
app.listen(4443, () => console.log('Listening on http://localhost:4443/'));
此代码是一个非常简单的REST API,它公开了一个端点,但您可以轻松添加更多。
但如果您从头开始构建RESTful API,那么您可以考虑使用其他一些框架:Hapi,Restify,LoopBack和http://nodeframework.com/上列出的其他框架 - Express非常可靠但公平最小的框架,并不是唯一的选择。
答案 1 :(得分:0)
你可以用快递做到这一点 - 见下文
安装express和body-parser,随意使用下面的模块
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
module.exports = {
init: function(module_Enabled){
var portnum = 1234; process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
var allowCrossDomain = function(req,÷ res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');
// intercept OPTIONS method
if ('OPTIONS' == req.method) {
res.send(200);
} else {
next();
}
};
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(bodyParser.json());
app.use(allowCrossDomain);
var server = app.listen(portnum, function() {
var host = server.address().address;
var port = server.address().port;
console.log("Content Provider Service listening at http://%s:%s", host, port);
});
app.get('/', function(req, res) {
res.send('data');
});
}
}
答案 2 :(得分:0)
是的,你可以。 express
能够返回其他html元素的响应。
但是,我建议您使用swagger project通过express
开发REST API。在开发和维护API时,该项目肯定会派上用场,特别是如果您的API庞大而复杂(大量的URL和操作)。
这个site很好地解释了如何在NodeJ中安装,使用和运行swagger。