node.js - '无法获取 /api/items'
问题描述
使用 MERN 应用程序来了解它是如何工作的,但我一直在试图让我的路线显示。我没有收到任何其他错误,如果我使用 simple app.get('/')
,我可以看到就好了;似乎我定义的路线由于某种原因没有被识别。
require('dotenv').config();
const express = require('express');
const cors = require('cors');
const app = express();
const port = process.env.PORT;
const options = {
origin: 'http://localhost:8081'
}
app.use(cors(options));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
const db = require('./models');
db.mongoose
.connect(db.url, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => {
console.log('Successfully connected.');
})
.catch((error) =>{
console.log(`Connection failed. Error: ${error}`);
process.exit();
}
);
require('./routes/items.routes')(app)
app.listen(port, () => {
console.log(`Listening at localhost:${port}`);
});
const multer = require('multer');
const dir = './public/';
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, dir);
},
filename: (req, file, cb) => {
const fileName = file.originalname.toLowerCase().split(' ').join('-');
cb(null, fileName + '-' + Date.now());
}
});
var upload = multer({
storage: storage,
fileFilter: (req, file, cb) => {
if (file.mimetype == 'image/png' || file.mimetype == 'image/jpg' || file.mimetype == 'image/jpeg') {
cb(null, true);
} else {
cb(null, false);
return cb(new Error('Invalid file type.'));
}
}
});
module.exports = app => {
const items = require('../controllers/items.controller');
let router = require('express').Router();
router.post('/', upload.single('icon'), items.create);
router.delete('/:id', items.delete);
app.use('/api/items', router);
};
解决方案
您标题中的错误:
Cannot GET /api/items
意味着它是一个 GET 请求/api/items
。但是,您没有该路由的 GET 处理程序。对于使用这两行代码定义的路由,您只有一个 POST 处理程序:
router.post('/', upload.single('icon'), items.create);
app.use('/api/items', router);
因此,您显然需要将该路线上的测试更改为 POST,而不是 GET,并且 POST 将期待一个带有图标数据的正文部分。
如果您想确切了解路由器的内容(出于调试/故障排除的目的),您可以在将路由器声明为您在路由器上注册的第一个项目后立即添加它。
router.use((req, res, next) => {
console.log(`In router: ${req.method}:${req.originalUrl}`);
next();
});
推荐阅读
- maven - 如果在构建和下载 maven 项目时编辑 maven settings.xml 镜像会发生什么?
- java - 保存按钮的背景?
- c# - 如果鼠标按下后 MouseMove 不会触发 MouseUp
- c - 如何从 gdb 的“信息符号”命令中获取确切位置
- x86 - 现代计算机是以实模式启动还是以虚拟实模式启动?
- java - 从远程服务器中的某个位置创建一个“FileOutputStream”
- c - 如何获取子进程的退出状态?
- python - 在 Python 中,% 背后的逻辑是什么
- java - 在 Ubuntu 19.10 中找不到 Oracle JDK 8 Keytool
- android - 双向数据绑定android:使用转换器检查