#javascript #json #vue.js #axios #http-status-code-404
#javascript #json #vue.js #axios #http-status-code-404
Вопрос:
Я пытаюсь создать (с vue.js
помощью) приложение для блога / статей, которое использует axios
для запроса данных из моего db.json
файла с get request
помощью . Я хочу, чтобы он показывал данные из этой статьи после того, как на нее нажали из списка основных статей ==> Я использую id prop
, чтобы он знал, какие данные статьи нужно получить. Здесь я вызываю свой get-запрос (get-запрос находится в другом файле, продолжайте читать).
ArticleShow.vue
<script>
import APIService from "@/APIService.js";
export default {
props: ["id"], // "id" has been passed as a prop when I import this file to its parent
data() {
return {
article: {}
};
},
created() {
APIService.getArticle(this.id).then(response => {
this.article = response.data;
});
}
};
</script>
Это запрос axios GET, который я использую (он находится внутри APIService.js файл)
APIService.js
import axios from "axios";
const apiClient = axios.create({
baseURL: "http://localhost:5000",
withCredentials: false,
headers: {
Accept: "application/json",
"Content-Type": "application/json"
}
});
export default {
getArticle(id) {
return apiClient.get("/articles/" id);
}
}
Я думал, что этот код будет работать, но в моем браузере я получаю следующую ошибку:
GET http://localhost:5000/articles/undefined 404 (Not Found)
Uncaught (in promise) Error: Request failed with status code 404
at createError (createError.js?2d83:16)
at settle (settle.js?467f:17)
at XMLHttpRequest.handleLoad (xhr.js?b50d:62)
Я попытался уловить ошибку, но не смог получить никакой полезной информации о том, откуда она взялась и как я мог ее исправить. Я предположил id prop
, что это может быть причиной проблемы, но не уверен. В родительском ArticleShow
компоненте компонента я определяю id prop
при отображении ArticleShow
в маршрутизаторе-link.
ArticleCard.vue
<router-link
class="article-link"
:to="{ name: 'ArticleShow', params: { id: article.id } }"
:article="this.article"
>
А затем снова в родительском элементе Articlecard.vue
(предыдущем компоненте)
Home.vue
<ArticleCard
v-for="article in articles" // I imported *articles* from the vuex store
:key="article.id"
:article="article"
class="ArticleCard"
></ArticleCard>
Все еще не уверен id prop
, действительно ли это корень проблемы здесь. В любом случае, пожалуйста, помогите, если сможете, по этой проблеме, поскольку она продолжается уже довольно давно, любая помощь приветствуется.
Комментарии:
1. Это 404 или соединение отклонено? Ваш заголовок и тело не согласуются друг с другом, и это очень разные ошибки.
2. Извините, неправильная ошибка. Я исправил это сейчас, это ошибка, которую я получаю в консоли браузера. Я думаю, что проблема может быть в идентификаторе, потому что в сообщении об ошибке он называет его …/undefined , но я не понимаю, почему.
Ответ №1:
Ошибка 404 означает, что этот URL-адрес не существует: http://localhost:5000/articles/undefined
Таким образом, это означает, что вы не передали никакого id
реквизита ArticleShow
компоненту
Комментарии:
1. Да, но я пошел по пути id prop, и все это, кажется, имеет смысл. Не уверен, где возникает ошибка и почему она не может идентифицировать идентификатор: (
2. @MattReid Просто попробуйте <ArticleShow :id=»1″ /> и проверьте вкладку devtools network, например