如何创建没有视图的NodeJS应用程序?只有NodeJS REST API

时间:2017-07-31 09:15:11

标签: node.js rest azure express

我需要创建一个NodeJS应用程序,它只用于公开REST API。当我使用Express生成器express myNodeApp创建ExpressJS项目时,它会创建一个项目,将视图默认为.jade文件。

我可以创建并运行没有视图的NodeJS项目吗?我的NodeJS项目将公开另一个客户端应用程序将使用的REST服务。因此我的NodeJS项目不需要任何UI元素。还有package.json.bin/www文件。我将在Azure云中托管我的NodeJS项目,我的客户端应用程序将使用来自云的公开服务。

3 个答案:

答案 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。