Невозможно GET / post / api / posts / 5c804ec6ad029f21201c686e Не найдено из-за нежелательного добавления слова «сообщения» - PullRequest
0 голосов
/ 26 мая 2020

всякий раз, когда я пытаюсь получить api сообщения, я получаю сообщение об ошибке Cannot GET / posts / api / posts / 5c804ec6ad029f21201c686e

Я не могу понять, где добавляется слово «сообщения» мой вызов api с помощью ax ios. Я проверил свой код thourouly, но я не могу найти ошибку. Может ли кто-нибудь помочь мне с этим.

Сообщение. js; -

import React, { Fragment, useEffect } from 'react'
import PropTypes from 'prop-types'
import { connect } from 'react-redux';
import Spinner from '../layout/Spinner';
import { getPost } from '../../actions/post';
import PostItem from '../posts/PostItem';

const Post = ({ getPost, post: { post, loading }, match }) => {

    useEffect(() => {
        getPost(match.params.id)
    }, [getPost]);

    return <h1>Post</h1>

    // loading || post === null ? <Spinner /> :
    //     <Fragment>
    //         <PostItem post={post} showActions={false} />
    //     </Fragment>

}

Post.propTypes = {
    getPost: PropTypes.func.isRequired,
    post: PropTypes.object.isRequired,
}
const mapStateToProps = state => ({
    post: state.post
})

export default connect(mapStateToProps, { getPost })(Post)

Действия с отправкой: -

import axios from "axios";
import { setAlert } from './alert';
import {
    GET_POSTS,
    POST_ERROR,
    UPDATE_LIKES,
    DELETE_POST,
    ADD_POST,
    GET_POST
} from './types';

// Get post
export const getPost = id => async dispatch => {
    try {

        const res = await axios.get(`api/posts/${id}`);

        dispatch({
            type: GET_POST,
            payload: res.data
        })

    } catch (err) {

        dispatch({
            type: POST_ERROR,
            payload: { msg: err.response.statusText, status: err.response.status }
        })

    }
}

код возврата в Node.js

//@route  Get api/posts/:id
//@desc   GET Post by Id
//@access Private

router.get("/:id", auth, async (req, res) => {
    try {
        const post = await Post.findById(req.params.id);

        if (!post) {
            return res.status(404).json({ msg: 'Post not found' })
        }
        res.json(post);
    } catch (err) {
        console.log(err.message);
        if (err.kind === 'ObjectId') {
            return res.status(404).json({ msg: 'Post not found' })
        }
        res.status(500).send('Server Error');
    }

});

1 Ответ

0 голосов
/ 27 мая 2020

Я сразу же подумал, что вызов api происходит на странице, отличной от root, в данном случае на /posts странице (также известной как http://your-site.com/posts)

путем добавления forward sla sh перед вашим вызовом заставит ваш запрос api go из root.

Попробуйте

await axios.get(`/api/posts/${id}`);
...