Node.js Запрос POST через Angular приложение возвращает ошибку 404 «не найден» - PullRequest
1 голос
/ 13 июля 2020

Я создаю API, используя Node.js, который подключается к базе данных SQL Server. Мои запросы GET работают хорошо, но мой запрос POST выдает ошибки. Я разделил свой проект узла на два файла: файл маршрутов и файл контроллеров.

Код в моем файле маршрутов выглядит следующим образом:

module.exports = (app) => {
  const UsrContrllr = require('../Controllers/users.controllers');
  
  //1. GET ALL USERS
  app.get('/api/users', UsrContrllr.getAllUsers);

        
  //2. POST NEW USER
  app.post('/api/user/new', UsrContrllr.addNewUser);
};

И код в моем файле контроллеров приведено ниже:

const mssql = require('mssql');

exports.getAllUsers = (req, res) => 
{
    // Validate request
    console.log(`Fetching RESPONSE`);
    // create Request object
    var request = new mssql.Request();
    // query to the database and get the records
    const queryStr = `SELECT * FROM USERS`;
    request.query(queryStr, function (err, recordset) {
        if (err) console.log(err)
        else {
            if (recordset.recordset.toString() === '') {
                res.send('Oops!!! Required data not found...');
            }
            else {
                // send records as a response
                res.send(recordset);
            }
        };
    });
};

exports.addNewUser = (req, res) =>
{
     // Validate request
     console.log(`INSERTING RECORD ${req.body}`);
     // create Request object
     var request = new mssql.Request();
     // query to the database and get the records
     const queryStr = `INSERT INTO USERS (USERCODE, PASSWORD, LANGUAGE, USERCLASS, FIRSTNAME, LASTNAME, CONTACTNO) VALUES ('${req.body.usercode}', '${req.body.password}', 'EN', '0', '${req.body.firstname}', '${req.body.lastname}', '${req.body.contactno}');`;
     console.log(queryStr);
     request.query(queryStr, function (err, recordset) {
         if (err) console.log(err)
         else {
             if (recordset.recordset.toString() == '') {
                 res.send('Oops!!! Required data not found...');
             }
             else {
                 // Send records as response
                 res.send(recordset);
             }
         };
    });
};

Когда я запускаю запрос POST из моего angular приложения, я получаю HttpErrorResponse, ошибка 404 не найдена.

ошибка: «Ошибка: Невозможно выполнить POST / api / users / new "сообщение:" Ответ об ошибке HTTP для http://url: порт / api / users / new: 404 Not Found "имя:" HttpErrorResponse "ok: false status: 404 statusText:" Not Found "url : «http://url: порт / api / users / new»

Код angular в служебном файле выглядит следующим образом:

private url = 'http://url:port/api/users';
signup(fName: string, lName: string, usrCode: string, pwd: string, cntctNbr: string) {
  const headers = new HttpHeaders().set('Content-Type', 'application/json');  
  const newUsr = {
    usercode: usrCode,
    password: pwd,
    firstname: fName,
    lastname: lName,
    contactno: cntctNbr
  }
  
  this.http.post(this.url + '/new', JSON.stringify(newUsr), { headers: headers }).subscribe(data => {
      console.log(data);
  });
}

Я не понимаю почему я не могу добавить новых пользователей. Мне сказали, что мой код выглядит нормально, но я не вижу результатов. Где я ошибаюсь?

1 Ответ

1 голос
/ 13 июля 2020

Вы получаете ошибку 404 (Not found), потому что ваш POST-маршрут определен как / user / new, но в вашем приложении angular вы вызываете http://url: port / api / users / new

Исправьте код в вашем API на следующий:

app.post('/api/users/new', UsrContrllr.addNewUser);
...