首页 > 解决方案 > 无法连接到我的快速服务器中的 api 端点

问题描述

我是新来表达的,目前在连接到 api 时遇到问题

下面是我的代码

const express = require("express");
const session = require("express-session");
const MongoStore = require("connect-mongo");
const flash = require("connect-flash");
const fetch = require("node-fetch");
const axios = require("axios");

const app = express();
const dotenv = require("dotenv");
dotenv.config();
let sessionOptions = session({
  secret: "Javascript is so cool",
  store: MongoStore.create({ mongoUrl: process.env.CONNECTIONSTRING }),
  resave: false,
  saveUninitialized: false,
  cookie: { maxAge: 1000 * 60 * 60 * 24, httpOnly: true },
});

app.use(sessionOptions);
app.use(flash());
app.use(express.urlencoded({ extended: false }));
app.use(express.json());
app.use(express.static("public"));

app.set("views", "views");
app.set("view engine", "ejs");
const router = require("./router");
const apiRouter = require("./apiRouter");

const options = {
  url: "https://rms.pythonanywhere.com/api",
  method: "",
  json: {},
};

app.use("/", router);
app.use(options.url, apiRouter);

module.exports = app;

下面是我为去往 api 的路线创建的文件

const express = require("express");
const apiRouter = express.Router();
const request = require("request");
const fetch = require("node-fetch");
const userController = require("./controllers/userController");
const pageController = require("./controllers/pageController");

apiRouter.post("/user/create", async function (req, res) {
  const api_url = "https://rms.pythonanywhere.com/api";
  const fetch_res = await fetch(api_url, options);
  const json = await fetch_res.json();
  res.json(json);
});

module.exports = apiRouter;

当我提交我的注册表单时,我希望它向 api 的 url 发送发布请求并收到它的响应。但是每当我向 api url 发送一个发布请求时,它都会返回一个错误(无法向 /user/create 发送发布请求)

我真正想要实现的是连接到这个 api 链接 (rms.pythonanywhere.com/api) 并能够引导我的路由进行注册和登录到 api 的其他一些路由。我已经为此奋斗了一个多星期了。请大家帮帮我,我是新手,提前谢谢大家

标签: javascriptexpress

解决方案


谢谢你们的回复。虽然实际上没有一个解决方案,但它让我知道我需要做什么。

我在解决我的问题时使用的是axios. 我required("axios")从 npm store 和 den 安装后,我在apiRouter.post("/user/create")路线中使用了它。以下是我为解决问题所做的工作

apiRouter.post("/register", async function (req, res) {
  const api_url = "https://rms.pythonanywhere.com/api";
  axios.post(api_url + "/user/create/", {
      first_name: req.body.first_name,
      last_name: req.body.last_name,
      email: req.body.email,
      password: req.body.password,
      user_type: req.body.user_type,
      username: req.body.username,
}). then((response) =>{}).catch((error){})

});

我能够从我的发布请求中发送数据,并在我的块中apiRouter.post(/register)收到成功响应then()和错误响应。catch()


推荐阅读