我试图使用节点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);
})
}
}
答案 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