0

现在我正在尝试构建一个应用程序作为编码培训,其中涉及两个不同本地主机之间的通信,其端口号为 8080 和 3000。

8080 负责处理主要功能,例如显示内容、获取用户输入等,而 3000 则充当 API 服务器。

8080 的一些请求似乎没有被 3000 正确处理,所以我想检查一下 3000(本地 API 服务器)是如何自己工作的。

然后我开始怀疑这个本地 API 服务器(3000)是否有部分错误,因为它post似乎没有工作,而它get似乎在工作。

这是配置。

[api.js]

const fs = require('fs');
const path = require('path');
const express = require('express');

const api = express();
const apiUrl = process.env.URL || 'http://localhost';
const apiPort = 3000;

api.use(express.json());

api.get('/api/feed/get' , (req, res) => {
  console.log('Displaying the result of api.get: ');
  let feedFile = path.resolve(__dirname, '../feed.json');

  res.type('json');
  res.sendFile(feedFile);
});

api.post('/api/feed/post' , (req, res) => {     
  let feedFile = path.resolve(__dirname, '../feed.json');
  let feedContent = JSON.parse(fs.readFileSync(feedFile));
  let feedPosted = req.body;
  let feedJson = '';

  console.log('/api/feed/post:', feedPosted);

  feedContent.push(feedPosted);

  feedJson = JSON.stringify(feedContent);

  fs.writeFileSync(feedFile, feedJson);

  res.type('json');
  res.sendFile(feedFile);
});

api.listen(apiPort, () => {
  console.log(`API server running at ${apiUrl}:${apiPort}`);
});

我安装express并添加了该行

"api":"node ./src/api.js"

package.json文件中更新配置,所以现在它被定义为

........
........

"private": true,
  "scripts": {
    "start": "concurrently --kill-others \"npm run app\" \"npm run api\"",
    "dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",
    "build": "cross-env NODE_ENV=production webpack --progress --hide-modules",
    "api":"node ./src/api.js"
  },
  "dependencies": {
    "@dongido/vue-viaudio": "^0.3.2",
    "axios": "^0.19.0",
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "fs": "0.0.1-security",
    "vue": "^2.5.11",
    "vue-axios": "^2.1.4",
    "vue-router": "^3.0.7"
  },
..........
..........

当我通过 运行本地 API 服务器npm run api时,打开一个新选项卡并直接http://localhost:3000/api/feed/get作为 URL 输入时的结果如下。

[
  {
    "avatar": "/avatar/avatar-colshacol.jpg",
    "username": "Colton Colcleasure",
    "handle": "@colshacol",
    "timestamp": 1541851080000,
    "content": "",
    "media": {
      "type": "image",
      "url": "/media/media-pony-pooping-rainbow-icecream.gif"
    },
    "actions": {
      "replies": 2,
      "rekweets": 41,
      "likes": 172
    }
  },
  {
    "avatar": "/avatar/dankotaru_ketsui.jpeg",
    "username": "安西先生",
    "handle": "@ホッホッホッホ",
    "timestamp": 9031851080000,
    "content": "最後まで希望を捨てちゃいかん。諦めたら、そこで試合終了だよ。…………聞こえんのか?あ?…………私だけかね?まだ勝てると思ってるのは…。",
    "actions": {
      "replies": 4,
      "rekweets": 31,
      "likes": 184
    }
  },

.........
.........
.........

]

如您所见,JSON 文件已正确获取。

但是当我输入时http://localhost:3000/api/feed/post,我只得到 response Cannot GET /api/feed/post

这背后的原因可能是什么?解决方案是什么?

4

0 回答 0