在生产上部署Node js REST Api并使用React Native来获取数据

时间:2019-01-11 05:27:24

标签: node.js api

我是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

我不知道该怎么办。请帮忙。

谢谢

1 个答案:

答案 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服务器目录中,则我可以阅读它,这很可能会导致非常严重 >安全漏洞。