Доступ только к одному маршруту из иерархии маршрутов - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь получить доступ к маршруту напрямую из запроса, хотя другая подпапка работает, а другая - нет. Неоднократно выкидывал 404 ошибки. /api/getPostList работает, но /post/ или /post/:title не работает.

Я реструктурировал код, попытался изменить его с запроса получения на запрос публикации, добавил /post/:title для доступа к отдельной записи или без / для доступа к основному списку.

Server.js содержит

app.use('/', Routes);

routs / index.js содержит

const router = require('express').Router();
const posts = require('./posts');
const api = require('./api');

router.use('/post', posts);
router.use('/api', api);

module.exports = router;

routs / api / index.js содержит

Api.get('/getPostList', (req, res) => {
    PostModel.find(function (err, post) {
    if (err) return console.log('error: ' + err);
    return res.json({ postList: post});
    });
console.log("Attempted to get post list on /getPost/ route: " + ++postRouteCnt);
});

Api.get('/getPost/:title', getPost);
module.exports = Api;

routs / post / index.js содержит

const Posts = require('express').Router();
const post = require('./post');
const PostModel = require('../../../server/models.js');

let postRouteCnt = 0;
Posts.get('/', (req, res) => {
    PostModel.find(function (err, post) {
        if (err) return console.log('error: ' + err);
        return res.json({ postList: post});
    });
    console.log("Attempted to get post list on /post/ route: " + ++postRouteCnt);
});

Posts.get('/:title', post);

module.exports = Posts;

При звонке /post/ я получаю 404 Cannot GET /post/, когда должен получить ответ json.

EDIT: Структура папок

 Server/

   routes/

     api/

      index.js

      getPost.js (for individual post)

     posts/

      index.js

      post.js (for individual post)

   server.js

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Основываясь на вашей структуре папок, я пытаюсь написать код с простым кодом

App.js:

const express = require('express')
const app = express()
const port = 3000
const Routes = require('./routes/posts/index.js');

app.use('/', Routes);

app.listen(port, () => console.log(`Example app listening on port ${port}!`))

.routes / posts / index.js:

const express = require('express');
const router = express.Router();
const postController = require('./post');

// GET /
router.get('/posts', postController.getPosts);

module.exports = router;

.routes / posts / post.js:

exports.getPosts = (req,res) => {
  res.send('test');
}

Попробуйте ввести http://localhost:3000/posts и его работу

Вы можете написать любую логику в .routes / posts / post.js:

0 голосов
/ 13 января 2019

попробуйте изменить это так

Posts.get('/', (req, res) => {
    PostModel.find(function (err, post) {
        if (err) throw err;
        res.send({ postList: post});
    });
    console.log("Attempted to get post list on /post/ route: " + ++postRouteCnt);
});

Теперь попробуйте этот URL

/ запись /

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