Получение ошибки «невозможно получить» при создании API в Express JS - PullRequest
0 голосов
/ 20 сентября 2018

Я работаю над созданием REST API в Express JS, но получаю сообщение об ошибке «Cannot GET / api / bears».вот мой код

server.js

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var mongoose   = require('mongoose');
var Bear = require('./app/models/bear');

mongoose.connect('mongodb://localhost/api', { useNewUrlParser: true }); // connect to our database




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

var port = process.env.PORT || 3000;
 //routes for api
 var router = express.Router();


router.use(function(req, res, next) {

    console.log('Something is happening.');
    next();
});

 router.get('/',function(req,res){
    res.json({message: "Welcome to my Api"});
 });

 router.route('/bears')

    .post(function(req,res){
        var bear = new Bear();
        bear.name = req.body.name;


        bear.save(function(err){
            if(err)
            {
                res.send(err);
            }
            res.json({message: 'bear created!'});
        });
    });

 app.use('/api', router);

 app.listen(port);
 console.log("Magic happens on port" + port);

app / models / bear.js

var mongoose     = require('mongoose');
var Schema       = mongoose.Schema;

var BearSchema   = new Schema({
    name: String
});

module.exports = mongoose.model('Bear', BearSchema);

На локальном хосте: 3000 / API, все работает нормально, но наlocalhost: 3000 / api / bears Я получаю Невозможно получить / api / bears

Может ли кто-нибудь помочь мне там, где мне не хватает?

Ответы [ 2 ]

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

Вы создали маршрут с методом POST для создания медведя, но у вас нет маршрута для получения данных:

router.route('/bears').post(function.....

Вот почему вы получаете:

400 НевозможноGET / api / bears

Добавьте что-то вроде этого и попробуйте снова.

router.route('/bears').get(function (req, res) {
    Bear.find({}, function (err, result) {
        res.status(200).send({ result });
    })
});
0 голосов
/ 20 сентября 2018

Вы непременно получите эту ошибку

Невозможно получить / api / bears

Здесь важно второе слово: GET

Выопределил свой маршрут с помощью:

router.route('/bears').post(function(req,res){ [...] })

Если вы отправите запрос GET, вы, безусловно, не будете соответствовать маршруту.Вместо этого сделайте запрос POST.

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