我是Node js的新手。我正在学习在节点js上创建REST api。我在节点js中创建了一个基本文件,并在我的本地计算机上运行它,它工作正常,我使用邮递员对其进行了测试,它也给了我结果。这是代码
const express = require('express'); //for routes
const app = express();
app.use(express.json());
// creating an array of courses
const courses = [
{ id: 1, name: 'courses1' },
{ id: 2, name: 'courses2' },
{ id: 3, name: 'courses3' },
]
// getting specific course
app.get('/api/courses/:id', (req, res) => {
const course = courses.find(c => c.id === parseInt(req.params.id));
if (!course) return res.status(404).send('the course with the given id not found.');
res.send(course);
});
// post course data
app.post('/api/courses', (req, res) => {
const { error } = validateinputs(req.body);
if (error) {
res.status(400).send(error.details[0].message);
return;
}
const course = {
id: courses.length + 1,
name: req.body.name
}
courses.push(course);
res.send(course);
});
// running on port.
const port = process.env.PORT || 3000;
app.listen(port, () => console.log('Listening on port ' + port));
这是我在本地计算机上使用邮递员及其工作程序测试过的基本代码。 但是现在我希望它可以部署在我的服务器上。我已经使用服务器控制台安装了node和npm。并将此文件复制到生产服务器上新创建的项目中。这样。
const express = require('express'); //for routes
const app = express();
app.use(express.json()); // for post
// creating an array of courses
const courses = [
{id: 1, name: 'courses1'},
{id: 2, name: 'courses2'},
{id: 3, name: 'courses3'},
]
app.get('/api', (req, res) => {
res.send('Hey');
});
// res.send(courses);
// getting specific course
app.get('/api/courses/:id', (req, res) => {
const course = courses.find(c => c.id === parseInt(req.params.id)
);
if (!course) return res.status(404).send('the course with the given id not found.');
res.send(course);
});
// running on port.
const port = process.env.PORT || 3000;
app.listen(port, () => console.log('Listening on port ' + port));
然后我在
之类的生产服务器上手动启动服务器node index.js
它给了我消息
Listening on port 3000
现在,当我用邮递员对其进行测试时,它无法正常工作。我正在使用此链接,将项目安装在文件夹adroit_api下。
https://adroit-services.co.uk/adroit_api/api
这是返回本网站主页的源页面
https://adroit-services.co.uk
我不知道该怎么办。请帮忙。
谢谢
答案 0 :(得分:0)
您可能在NodeJS Express应用程序外部遇到路由问题。检查您的Web服务器的设置,例如虚拟主机。
话虽这么说,您的API在端口3000上运行,而Web服务器在端口80上。因此,您可能还需要检查https://example.com:3000/api
之类的API(将example.com
替换为您的自己服务器的URL),因为访问https://example.com/api
意味着您正在尝试通过端口80而不是3000访问它。
此外,如果您通过访问https://example.com/example_api/index.js
将您的服务器端代码放入Web服务器目录中,则我可以阅读它,这很可能会导致非常严重 >安全漏洞。