【问题标题】:How to call POST method in express js?如何在express js中调用POST方法?
【发布时间】:2019-02-24 19:10:52
【问题描述】:

我正在尝试学习 REST API。我创建了 POST 方法,但它不起作用 get 方法在邮递员中工作正常,但 post 方法不起作用。谁能帮我在我失踪的地方? 我被困在其中。 这是我的代码

app.js

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');

//connect to mongoose
Genre =require('./models/genre');
Book =require('./models/book');

// Connect to Mongoose
mongoose.connect('mongodb://localhost/bookstore',{ useNewUrlParser: true });
var db = mongoose.connection;

app.get('/', (req, res) => {
    res.send('Please use /api/book or /api/genres');
});

app.get('/api/genres', (req, res) => {
    Genre.getGenres((err, genres) => {
        if(err){
            throw err;
        }
        res.json(genres);
    });
});


 app.post('/api/genres', (req, res) => {
    var genre = req.body;
    Genre.addGenre(genre, (err, genre) => {
        if(err){
            throw err;
            console.log(err);
        }
        res.json(genre);
    });
}); 



app.listen(3000);
console.log("running on port 3000..");

models/genre.js

const mongoose = require('mongoose');

// Genre Schema
const genreSchema = mongoose.Schema({
    name:{
        type: String,
        required: true
    },
    create_date:{
        type: Date,
        default: Date.now
    }
});

const Genre = module.exports = mongoose.model('Genre', genreSchema);

// Get Genres
module.exports.getGenres = (callback /* we can access through routes*/, limit) => {
    Genre.find(callback).limit(limit);
}

//add genre



 module.exports.addGenre = (genre, callback) => {
    Genre.create(genre, callback);
} 

get 方法在 postman 中工作正常,但 post 方法不起作用。任何人都可以在我失踪的地方帮助我吗?

【问题讨论】:

  • 成功了吗????
  • 是的.. 非常感谢 :)

标签: javascript node.js api express npm


【解决方案1】:

如果您想在 POST 处理程序中访问 req.body,则需要使用一些 express middleware 来实际解析请求正文。例如,要解析 JSON 正文,您将需要 express.json 中间件。

【讨论】:

    【解决方案2】:

    您需要相应地更新您的代码:

    添加app.js

    // BodyParser middleware
    const BodyParser = require(`body-parser`);
    // Create application/json parser
    App.use(BodyParser.json({ limit: `50mb` })); // Set request size
    
    // create application/x-www-form-urlencoded parser
    App.use(BodyParser.urlencoded({ limit: `50mb`, extended: true }));
    

    更新 API 调用:

    app.post('/api/genres', (req, res) => {
        var genre = req.body;
        Genre.addGenre(genre, (err, genreDB) => {
            if(err){
                throw err;
                console.log(err);
            }
            res.status(200).send(genreDB);
        });
    }); 
    

    希望这对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-31
      • 2020-12-16
      • 2016-05-26
      • 2021-08-29
      • 2015-06-03
      • 1970-01-01
      相关资源
      最近更新 更多