节点js rest API返回错误说“不能POST / api / v1 / user'

时间:2017-07-19 14:16:39

标签: javascript node.js rest api

我试图使用节点js为rest api创建post方法,但它说不能在邮递员和失眠中发布/ api / v1 / user,但在控制台中没有错误,任何人都可以帮帮我?

这是我的代码

server.js

// require dependencies
var app = require('express')();
var http = require('http').Server(app);
var mysql = require('mysql');
var bodyParser = require("body-parser");
// end require


app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Methods", "GET,POST,DELETE,PUT");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

// load controller
var welcome     = require('./controllers/welcome.js');
var users       = require('./controllers/user_controller.js');
// end of load controller

// This is the API Route

// Base Route
app.get('/api/v1', welcome.getApi);

// User Route
app.post('api/v1/user', users.post);


http.listen(8080,function(){
    console.log("Connected & Listen to port 8080");
});

user_model.js

var mysql = require('mysql');
const uuid = require('uuid/v4');
var connection = require('../config/conn.js');
var knex = require('knex')(connection);
// const salt = "QxLUF1bgIAdeQX";
// const crypto = require('crypto');
var moment = require('moment');
var table = "t_user";

module.exports = {
    post: function (req, callback) {
        var Id = uuid();
        var usrnm = req.body.usrnm;
        var pass = req.body.pass;
        var mail = req.body.mail;
        var name = req.body.name;
        var gndr = req.body.gndr;
        var addrss = req.body.addrss;
        var rl = req.body.rl;
        var crt = moment().format('MMMM Do YYYY, h:mm:ss a');
        var mdf = moment().format('MMMM Do YYYY, h:mm:ss a');
        var dlt = "";
        knex(table)
            .insert({
                id: Id,
                username: usrnm,
                password: pass,
                email: mail,
                realname: name,
                gender: gndr,
                address: addrss,
                role: rl,
                created_at: crt,
                modified_at: mdf,
                deleted_at: dlt
            })
            .then(function (rows){
                callback(null, rows);
            })
            .catch(function (err){
                callback(err);
            });
        console.log("test");
    }
}

user_controller.js

var model = require('../models/user_model.js');
var data = {
    "count" : 0,
    "status" : "",
    "detail" : ""
};

module.exports = {
    post: function (req,res) {

        model.post(req, function (error,result){

            if(error){
                data["status"] = "error";
                data["detail"] = error;
            }
            else{
                data["status"] = "success";
                data["detail"] = result;
            }
            res.json(data);

        })

    }
}

2 个答案:

答案 0 :(得分:3)

你可能在这里错过了斜线:

app.post('api/v1/user', users.post); // must be '/api/v1/user'

答案 1 :(得分:0)

可能希望查看Express的安全最佳实践 https://expressjs.com/en/advanced/best-practice-security.html