【问题标题】:Getting 404 error while accessing my API via node js server通过节点 js 服务器访问我的 API 时出现 404 错误
【发布时间】:2015-05-09 17:47:00
【问题描述】:

我是平均堆栈开发的新手。我试图创建一个用于简单用户注册的 API,但遇到了 404 错误。

这是我的代码文件

package.json

{
  "name": "userStory",
  "version": "1.0.0",
  "description": "This is a user story App",
  "main": "server.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Arindam Dawn",
  "license": "ISC",
  "dependencies": {
    "bcrypt-nodejs": "0.0.3",
    "body-parser": "^1.12.3",
    "express": "^4.12.3",
    "mongoose": "^4.0.2",
    "morgan": "^1.5.2"
  }
}

user.js

var mongoose = require('mongoose');

var Schema = mongoose.Schema;
var bcrypt = require('bcrypt-nodejs');

var UserSchema = new Schema({

    name : String,
    username : {type: String, required: true, index: {unique: true}},
    password : {type: String, required: true, select: false}

});

UserSchema.pre('save', function(next){

    var user = this;

    if(!user.isModified('password')) return next();

    bcrypt.hash(user.password, null, null, function(err, hash){
        if(err) return next(err);

        user.password = hash;
        next();

    });

});

UserSchema.methods.comparePassword = function(password){

    var user = this;
    return bcrypt.compareSync(password, user.password);
}

module.exports = mongoose.model('User', UserSchema);

api.js

var User = require('../models/user');

var config = require('../../config');

var secretKey = config.secretKey;

module.exports = function(app, express){

    var api = express.Router();

    api.post('/signup', function(req, res){

        var user = new User({
            name: req.body.name,
            username: req.body.username,
            password: req.body.password
        });

        user.save(function(err){
            if(err){
                res.send(err);
                return;
            }

            res.json({message : 'User has been created'});
        });
    });


    return api


}

server.js

var express = require('express');
var bodyParser = require('body-parser');
var morgan = require('morgan');
var config = require('./config');
var mongoose = require('mongoose');
var app = express();

mongoose.connect(config.database, function(err){
    if(err){
        console.log(err);
    }else{
        console.log("Connected to the database");
    }
});

app.use(bodyParser.urlencoded({extended : true}));
app.use(bodyParser.json());
app.use(morgan('dev'));


var api = require('./app/routes/api')(app, express);
api.use('/api', api);

app.get('*', function(req, res) {
    res.sendFile(__dirname + '/public/views/index.html');
});

app.listen(config.port,function(err){
    if(err){
        console.log(err);
    }else{
        console.log("Listening on port 3000");
    }
});

config.js

 module.exports = {

    "database" : "mongodb://root:abc123@ds045531.mongolab.com:45531/userstory",
    "port" : process.env.PORT || 3000,
    "secretKey" : "addyrockz"
}

这是我的目录结构

userStory
    -app
      -models
        -user.js
      -routes
        -api.js
    -node_modules
    -public
      -index.html
    config.js
    package.json
    server.js

我正在尝试使用邮递员客户端检查 API。我使用 post 和 url-encoded 尝试了 url localhost:3000/api/signup。

我将三个字段作为名称、用户名和密码及其各自的值传递,但我收到 404 错误。

【问题讨论】:

    标签: javascript node.js mongodb mean-stack


    【解决方案1】:

    server.js 文件第 22 行有错字。 而不是 api.use 它将是 app.use

    【讨论】:

    • api.use 和 app.use 有什么不同?
    猜你喜欢
    • 2018-01-24
    • 2021-07-26
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 2023-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多