现在我正在尝试构建一个应用程序作为编码培训,其中涉及两个不同本地主机之间的通信,其端口号为 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。
这背后的原因可能是什么?解决方案是什么?