【问题标题】:Access API endpoints EC2 + Node + ExpressJS访问 API 端点 EC2 + Node + ExpressJS
【发布时间】:2016-05-03 03:06:52
【问题描述】:

我有一个运行 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)

【问题讨论】:

    标签: node.js api express amazon-ec2


    【解决方案1】:

    如何连接到mongo?我应该把 mongo 主机留给 localhost 当我在 EC2 实例中运行它时? mongoose.connect('mongodb://localhost/mydb');

    是的,如果它在同一台服务器上,则为 localhost。

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

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

    【讨论】:

    • @Rüménok 我不明白你在说什么。我看不出此评论与您的​​问题或我的回答有何关联。
    猜你喜欢
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 2019-05-28
    相关资源
    最近更新 更多