我添加了所需的代码,但仍然得到:
无法获取/ api / login
我正在Postman以及直接在浏览器上对此进行测试。但是我仍然没有完全实现JWT身份验证。但是,像其他的API终点api/articles
,api/update
,api/delete
等工作正常。这是我的代码。
server.js
const express = require('express');
const bodyParser = require('body-parser');
const port = (process.env.PORT || 3000);
const app = express();
const api = require('./routes/api');
const cors = require('cors');
app.use(bodyParser.json());
app.use(cors());
app.use('/api', api);
app.get('/', function(req, res) {
res.send('Server is up and running!');
})
app.listen((3000), function() {
console.log('Server listening on PORT ' + port)
});
api.js
...
const jwt = require('jsonwebtoken');
router.post('/login', (req, res) => {
const user = {
id: 1,
username: 'tanzeel',
email: 'tanzeel@fakemail.com',
password: 'fakepassword'
}
jwt.sign({ user }, 'secretKey', (err, token) => {
res.json({
token
})
})
})
package.json
...
"dependencies": {
"body-parser": "^1.19.0",
"cors": "^2.8.5",
"express": "^4.17.1",
"jsonwebtoken": "^8.5.1",
"mongoose": "^5.6.13",
"serve": "^11.3.2"
}
我也有其他路线,但是我在这里没有提及,因为它们运行良好并返回正确的json响应。
请指出我的错误。
你的登录api应该可以处理POST请求(因为你已经使用router.post('/ login',)定义了路由)。由于你是从 Postman /浏览器发出GET请求,因此你的请求与你定义的任何路由都不匹配。
发出请求以从服务器获取响应时,将 Postman 中的请求类型更改为POST。