【问题标题】:Post 404 (Not Found) - Axios发布 404(未找到)-Axios
【发布时间】:2021-10-07 11:36:55
【问题描述】:

我不确定为什么找不到我的发帖请求?

我收到了这个错误

无论我尝试过什么并添加到我的帖子中,仍然会出现此错误我不确定这是 axios 的问题还是我的路线实际上不正确,如果您有任何有关如何解决此问题或我去过哪里的信息,请错了请帮忙

xhr.js:177 POST https://enigmatic-cliffs-10818.herokuapp.com/api/user/register 404 (Not Found)
dispatchXhrRequest @ xhr.js:177
xhrAdapter @ xhr.js:13
dispatchRequest @ dispatchRequest.js:52

我需要帮助是我的注册 api,其中包含允许人们注册和登录并确保用户通过身份验证的路由。我在多个论坛上尝试了多种解决方案,但似乎无法解决或解决任何问题

import axios from "axios";

class API {

    axios;

    constructor() {

        this.axios = axios.create();

    }

    /**
     * @param {String} name 
     * @param {String} value 
     */
    setHeader( name, value ) {

        if( value )

            this.axios.defaults.headers.common[name] = value;

        else

            delete this.axios.defaults.headers.common[name];

    }

    /**
     * @param {object} userData 
     * @param {String} userData.email
     * @param {String} userData.password
     * 
     * @returns {Promise}
     */
    register( userData ) {
      console.log("------");
      console.log(userData);
      console.log("------");

        return axios.post("/api/user/register", userData);

    }


    /**
     * @param {object} userData 
     * @param {String} userData.email
     * @param {String} userData.password
     * 
     * @returns {Promise}
     */
    login( userData ) {

        return axios.post("/api/user/login", userData);

    }

    authenticated() {

        return axios.post("/api/user/authenticated");

    }

}

export default new API();

我还没有找到适合我的应用程序的解决方案

【问题讨论】:

  • 你试过完整的网址吗? return axios.post("https://enigmatic-cliffs-10818.herokuapp.com/api/user/register", userData);
  • 添加完整网址时出现同样的错误

标签: reactjs axios


【解决方案1】:

这个404的原因是在routes目录的index.js,当你第二次声明router.use("/api", /* .. */)时,路由被覆盖。这意味着,与/api 端点关联的唯一路由是/addFavorite/:id

// These are your authentication routes.
router.use("/api", require("./authentication"));

//! These are your other `api` routes.
//! But this line will override the above routes.
//api routes
router.use("/api", apiRoutes);

要解决此问题,请将authentication.js 移动到api 目录并在/api/index.js 中进行以下更改。

const router = require("express").Router();

const userRoutes = require("./user");
const authRoutes = require("./authentication");

router.use("/user", userRoutes);

//! Make sure to use the route as `/auth` to avoid collision,
//! since you have defined `/user/login` in the authentication module.
router.use("/auth", authRoutes);

module.exports = router;

通过这样做,身份验证路由将在/api/auth/user/login 可用。

因此,您必须向 URL 发出身份验证请求 — https://enigmatic-cliffs-10818.herokuapp.com/api/auth/user/register

【讨论】:

  • 感谢您的详细回复,我相信我已经正确完成了您所说的一切,但我仍然遇到同样的问题
【解决方案2】:
  fetch('http://example.com/movies.json')
      .then(response => response.json())
      .then(data => console.log(data));

请为您的请求使用获取功能。

【讨论】:

  • 我之前尝试过这个,它导致更大的错误,我的部署失败
猜你喜欢
  • 2019-05-01
  • 2020-01-16
  • 2020-01-22
  • 1970-01-01
  • 2021-05-11
  • 2021-02-05
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
相关资源
最近更新 更多