2016-05-21 2 views
0

Я не могу показаться, чтобы получить мой .get ('/: post_id) маршрут на работу и я понятия не имею, почему ...Экспресс 4 REST API маршруты в подпапках

моя структура папок, как это:

  • app.js
  • маршруты
  • --api
  • ---- blog.js

существу blog.js находится в папке маршруты/апи

в app.js у меня есть это:

var blog = require('./routes/api/blog'); 
 

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

в blog.js у меня есть это:

//ALL API calls at /api/blog/:post_id 
 
    router.route('/:posts_id') 
 

 
    //Retrieve and individual post in JSON by id 
 
    .get(function(req, res) { 
 
     Post.findById(req.params.posts_id, function(err, post) { 
 
      if (err) { 
 
       res.send("error"); 
 
      } else { 
 
       res.json(post); 
 
      } 
 
     }); 
 
    });

есть запрос на получение и отправку в той же папке, и они работают нормально, но в итоге я получаю ошибку 404 из файла app.js и никогда не достигает пути: posts_id ... любые идеи?

ответ

0

вы должны изменить blog.js

var router = require('express').Router(); 

router 
    .get('/:posts_id', function (req, res, next) { 
     res.send("i am here") // in here when request /api/blog/:post_id 
    }); 

module.exports = router; 
+0

Так я попробовал это, но это не похоже на работу ... тот довольно много же, как и у меня есть, за исключением того, что удаляет «/» апи часть приложения app.use требуют. это приводит к сбою моего сервера, поскольку модуль отсутствует ./routes/blog. Спасибо, хотя –

+0

api.js и blog.js - это тот же каталог? Я не знаю, почему вы пишете var blog = require ('./ routes/api/blog'); -> like blog.js находится в каталоге api. – KibGzr

+0

Вам не хватает модуля экспорта? module.exports = router; – KibGzr