получение 404 в nodejs rest api - PullRequest
0 голосов
/ 21 июня 2020

Я изучаю nodejs, и я создал несколько API, когда у меня есть все функции на сервере. js он работает правильно. Теперь, когда я разделил свой код в dbConfig. js, server. js и в ProductController. js. Я начал получать 404, но мое соединение с БД работает нормально.
сервер. js:

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const conn = require('./connection/dbConfig');
const productRouter = require('./controller/ProductController');
// parse application/json
app.use(bodyParser.json());
//Server listening
app.listen(3000,() =>{
  console.log('Server started on port 3000...');
});

И мой ProductController. js:

'user strict';
 const conn = require('../connection/dbConfig');
 const express = require('express');
 const app = express();
 
//show all products
app.get('/getAllProducts',(req, res) => {
  let sql = "SELECT * FROM product";
  let query = conn.query(sql, (err, results) => {
    if(err) throw err;
    res.send(JSON.stringify({"status": 200, "error": null, "response": results}));
  });
});
 
//show single product
app.get('/getProductById/:id',(req, res) => {
  let sql = "SELECT * FROM product WHERE product_id="+req.params.id;
  let query = conn.query(sql, (err, results) => {
    if(err) throw err;
    res.send(JSON.stringify({"status": 200, "error": null, "response": results}));
  });
});
 
//add new product
app.post('/addProduct',(req, res) => {
  let data = {product_name: req.body.product_name, product_price: req.body.product_price};
  let sql = "INSERT INTO product SET ?";
  let query = conn.query(sql, data,(err, results) => {
    if(err) throw err;
    res.send(JSON.stringify({"status": 200, "error": null, "response": results}));
  });
});

1 Ответ

1 голос
/ 21 июня 2020

Чего не хватает в вашем приложении, так это использования маршрутизации . В основном ваше приложение в настоящее время не знает, что эти маршруты определены на ProductController.js, потому что вы не сказали ему об этом.

Вот быстрое решение для вас и быстрый пример того, как для настройки маршрутизации:

Ваш основной файл:

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const conn = require('./connection/dbConfig');
const productRouter = require('./controller/ProductController');

// parse application/json
app.use(bodyParser.json());

// NEW LINE: You should tell the application to use the productRouter.
// The first parameter tells the base location of the route and the second tells where it's located on the project
app.use('/products', productRouter);

//Server listening
app.listen(3000,() =>{
  console.log('Server started on port 3000...');
});

Ваш ProductController.js файл:

'use strict';
const conn = require('../connection/dbConfig');
const {Router} = require('express');

const route = new Router();
 
//show all products
route.get('/get',(req, res) => {
  let sql = "SELECT * FROM product";
  let query = conn.query(sql, (err, results) => {
    if(err) throw err;
    res.send(JSON.stringify({"status": 200, "error": null, "response": results}));
  });
});
 
//show single product
route.get('/get/:id',(req, res) => {
  let sql = "SELECT * FROM product WHERE product_id="+req.params.id;
  let query = conn.query(sql, (err, results) => {
    if(err) throw err;
    res.send(JSON.stringify({"status": 200, "error": null, "response": results}));
  });
});
 
//add new product
route.post('/add',(req, res) => {
  let data = {product_name: req.body.product_name, product_price: req.body.product_price};
  let sql = "INSERT INTO product SET ?";
  let query = conn.query(sql, data,(err, results) => {
    if(err) throw err;
    res.send(JSON.stringify({"status": 200, "error": null, "response": results}));
  });
});

module.exports = route;

Теперь вы можете получить доступ к этим местам по путям /products/get, /products/get/:id, /products/add и et c.

PS: Вы добавляете небольшую ошибку в строке 'use strict', это должно быть 'use strict' не 'user strict'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...