Как вызвать метод POST в экспресс JS? - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь изучить 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 работает нормально в почтальоне, но метод post не работает.Может ли кто-нибудь помочь мне там, где мне не хватает?

enter image description here

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Вам необходимо соответствующим образом обновить код:

Добавить в 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);
    });
}); 

Надеюсь, это работает для вас.

0 голосов
/ 20 сентября 2018

Если вы хотите получить доступ к req.body в вашем обработчике POST, вам потребуется использовать express middleware для фактического анализа тела запроса.Например, для разбора тел JSON вам понадобится express.json middleware.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...