访问API端点EC2 + Node + ExpressJS

时间:2016-05-02 18:44:58

标签: node.js api express amazon-ec2

我有一个运行Bitnami MEAN STACK的EC2实例。我想要做的是设置mongo和Node,以便调用我的API的端点。我写了app.js文件,我已经实现了一个连接到mongo的API。

  • 我现在的疑问是:如何连接到mongo?当我在EC2实例中运行时,我应该将mongo主机与localhost一起离开吗? mongoose.connect('mongodb://localhost/mydb');

  • 访问我的终端的URL是什么?在我的EC2实例中,我已经运行node app.js所以现在它正在运行...我可以在任何浏览器中使用哪个URL并且确实喜欢`... / api / users'?

api.js

var express = require('express');
var app = express();
var mongoose = require('mongoose');                    
var bodyParser = require('body-parser');    
var methodOverride = require('method-override'); 
var bcrypt = require('bcrypt'),
    SALT_WORK_FACTOR = 10;

var Schema = mongoose.Schema,
    ObjectId = Schema.ObjectId;

app.use(express.static(__dirname));
app.use(bodyParser.urlencoded({'extended':'true'}));            
app.use(bodyParser.json());                                     
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); 
app.use(methodOverride());

mongoose.connect('mongodb://localhost/mydb'); 

app.get('/', function(req, res){
  res.redirect('/index.html');
});

app.all("/api/*", function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With");
  res.header("Access-Control-Allow-Methods", "GET, PUT, POST");
  return next();
});

app.all("/api/*", function(req, res, next) {
  if (req.method.toLowerCase() !== "options") {
    return next();
  }
  return res.send(204);
});

// define model =================
var UserSchema = new Schema({
    email: { type: String, required: true, index: { unique: true } },
    password: { type: String, required: true },
});

var User = mongoose.model('User', UserSchema);

// api ---------------------------------------------------------------------
// get all todos

/* USERS API */
app.get('/api/users', function(req, res) {

    // use mongoose to get all todos in the database
    User.find(function(err, users) {

        // if there is an error retrieving, send the error. nothing after res.send(err) will execute
        if (err)
            res.send(err)

        res.json(users); // return all todos in JSON format
    });
});

app.listen(process.env.PORT || 5000)

1 个答案:

答案 0 :(得分:0)

  

如何连接到mongo?我应该使用localhost离开mongo主机吗?   因为我在EC2实例中运行它?   mongoose.connect( '的mongodb://本地主机/ MYDB');

是,如果localhost位于同一台服务器上,则为localhost。

  

访问我的端点的URL是什么?在我的EC2实例中,我已经运行了   节点app.js所以现在它正在运行...这是我可以进入的URL   任何浏览器,并且确实喜欢`... / api / users'?

进入EC2控制台并查找实例的公共IP地址。您的网址将类似于TextField。您必须打开安全组中的端口,可能还要打开EC2服务器上的防火墙(iptables)。