【问题标题】:Getting error of "cannot get" while making an api in express js在 express js 中制作 api 时出现“无法获取”的错误
【发布时间】:2019-02-24 10:53:12
【问题描述】:

我正在努力在 express js 中制作 REST API,但收到错误“无法获取 /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);

在 localhost:3000/api 上,一切正常,但在 localhost:3000/api/bears 我得到 Cannot GET /api/bears

任何人都可以帮我解决我想念的地方吗?

【问题讨论】:

    标签: javascript node.js api express npm


    【解决方案1】:

    你肯定会得到这个错误

    无法获取 /api/bears

    第二个词在这里很重要:GET

    你定义了你的路线:

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

    如果你发送一个 GET 请求,你肯定不会匹配到一个路由。改为发出 POST 请求。

    【讨论】:

      【解决方案2】:

      您已使用 POST 方法创建路由来创建熊,但没有获取数据的路由:

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

      这就是你得到的原因:

      400 无法获取 /api/bears

      添加类似的内容,然后重试。

      router.route('/bears').get(function (req, res) {
          Bear.find({}, function (err, result) {
              res.status(200).send({ result });
          })
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-31
        • 1970-01-01
        • 2019-02-18
        • 2020-03-26
        • 2015-10-19
        • 1970-01-01
        • 2019-02-23
        • 2012-10-31
        相关资源
        最近更新 更多