我已经工作了几个小时!正如您在以下代码示例中看到的那样,我使用express js创建了一个node js restful api,我使用node-firebird插件连接到firebird数据库。它在localhost:3000上侦听,当我发出GET请求localhost:3000 / products时,它工作正常。但是我需要使用runnig apache(端口80),因此,我使用的是 ProxyPass (如下所示),因此我可以监听两个端口,例如: localhost / node >,并且似乎仅能在我的节点项目的server.js中完成的代码起作用。 但是,当我尝试获取对 localhost / node / products 的请求时,却得到了 404 Not Found (找不到)。使用node js和apache创建restFul APi真是太好了,请让我知道您的想法
这是我的server.js
const app = require('./app.js')
const express = require("express")
var router = express.Router();
var Firebird = require('node-firebird')
app.listen(3000, ()=>console.log("listening port 3000"));
app.js
const express = require('express');
const app = express();
const productRoutes = require('./api/routes/products');
app.use('/products', productRoutes);
module.exports = app;
和我的products.js(我在其中创建了一个宁静的api)
const express = require("express");
const app = express();
const router = express.Router();
const mongoose = require("mongoose");
var Firebird = require('node-firebird');
var options = {};
console.log('here is porducts')
options.host = process.env.IP;
// options.port = 3050;
options.database =process.env.LOCATION;
options.user = process.env.FDB_UN;
options.password = process.env.FDB_PW;
options.lowercase_keys = false; // set to true to lowercase keys
options.role = null; // default
var msg;
router.get("/", (req, res, next) => {
Firebird.attach(options, function (err, db) {
if (err)
throw err;
db.query('select GM_ID,GM_POSTNUMMER,GM_DEELGEMEENTE,GM_LAND_FK,LN_ACTIEF
from Gemeente left join land on (GM_LAND_FK=LN_ID)',
function(err, result) {
msg= result
console.log(JSON.parse(JSON.stringify(result)))
res.status(200).json({
message: result
})
db.detach()
})
})
为了使用两个端口,我在apache的 httpd.conf 文件中添加了这一行
#added this for node js test
ProxyPass /node http://localhost:3000/
谢谢 托纳修