我有一个用于API网关的node-express项目。
这是我的网关代码;
app.use(cors({
origin: 'http://localhost:8081',
methods: ['GET', 'POST', 'PUT', 'DELETE'],
optionsSuccessStatus: 200
}));
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
//app.use(morgan('combined'));
app.use(cacheControl({
noCache: true
}));
dotenv.load();
// Serve static assets
app.use(express.static(path.join(__dirname, 'dist')));
axios.interceptors.response.use((response) => {
return {
success: true,
status: response.status,
data: response
};
}, error => {
let e = error;
let errObject = {
response: {
data: e.response.data
}
};
return Promise.reject(errObject);
});
app.post('/service', (req, res) => {
if (req.body.type.indexOf('auth' > -1)) {
let payload = {
url: process.env.DEV_ENDPOINT + req.body.type,
method: req.body.method,
data: req.body.data
};
try {
return axios(payload).then(function(response){
res.send(response);
}).catch((error) => {
res.send(error);
})
} catch (e) {
console.log("error");
console.log(e);
}
} else {
// verify it first
}
});
app.listen(PORT, error => (
error
? console.error(error)
: console.info(`Listening on port ${PORT}. Visit http://localhost:${PORT}/ in your browser.`)
));
module.exports = app;
现在,问题出在这里;在拦截器中,axios始终会捕获错误。 错误;
500内部服务器错误。如果您是该网站的管理员,请阅读此Web应用程序的日志文件和/或Web服务器的日志文件,以找出问题所在。
在邮递员中,我正在向实际api及其工作发送请求。但是在axios中,它不起作用。它总是发送错误文本。
答案 0 :(得分:0)
您可以在控制台中看到有关错误的信息。
app.post ('/ service', (req, res) => {
if (req.body.type.indexOf ('auth'> -1))
// Here in the .then, somehow introduce it
// in your code, try it.
.then (res => {
console.log (res);
该内部服务器错误有可能的原因和可能的解决方法,请看以下link,尽管它来自Laravel,但您可以有个主意,因为原因很清楚作为错误的概念要牢记。
同样的事情发生在我身上,在我的情况下,我在模式中的数据类型中有一个错误,此外,发生了一个与此this.axios.post不对应的修复程序。另外,我没有在控制台中显示答案,而是将其放入代码中。呵呵,我是APIREST的新手
如果有帮助,我的代码是:
this.axios.post ('/ inventory',
this.ArticlesForm)
.then (res => {
console.log (res);
this.invent.unshift (res.data)
})
.catch (function (error) {//
console.log (error.toJSON); //
console.log ('in inventory.vue')
});
},
在我的控制器中,我有以下内容:
router.post ('/ inventory', async (req, res) => {
const body = req.body;
try {
const DB note = await Invent.create (body);
res.status (200) .json (notaDB);
} catch (error) {
// return res.status (500) .json ({
// message: 'An error occurred in post',
//error
//})
}
按原样,在帖子中正确插入。