Почему я получаю ошибку статуса 404 в своем запросе PUT?

Я получаю HTTP 404 на запрос PUT, как показано ниже:

Почему я получаю ошибку статуса 404 в своем запросе PUT?

$(function(){
$("#showMovies").click(function() {
  $.ajax({
    method:"GET",
    url: "http://localhost:3000/movielist",
    dataType: "json",
    success: function (response) {
      $.each(response, function(i, movie) {
        const rowText = "<tr>" +
          "<td>" + movie.idmovielist + "</td>" +
          "<td>" + movie.name + "</td>" +
          "<td>" + movie.thumbnail_path + "</td>" +
          "<td>" + movie.description + "</td>" +
          "<td>" + movie.year_released + "</td>" +
          "<td>" + movie.language_released + "</td>" +
          "<td>" + "<button button id = \"deleteMovie\" type=\"button\" class=\"btn btn-danger\" data-toggle=\"modal\" data-target=\"#exampleModal\">Delete</button>" + "</td>" +
          "<td>" + "<button button id = \"editMovie\" type=\"button\" class=\"btn btn-danger\" data-toggle=\"modal\" data-target=\"#exampleModal\">Edit</button>" + "</td>";
        $("#movies").append(rowText);
      });
    }
  });
});

$("#movieAdded").click(function() {
  $.ajax({
    method:"POST",
    url: "http://localhost:3000/movielist/addMovie",
    dataType: "json",
    data: {
       idmovielist: 10,
       name: 'Bubble Gum',
       thumnail_path: 'yourieiri.jpg',
       description: 'Disturbing',
       year_released: '2007',
       language_released: 'french'
    },
    success: function (data) {
      $.each(data, function(i, movie) {
        const rowText = "<tr>" +
          "<td>" + movie.idmovielist + "</td>" +
          "<td>" + movie.name + "</td>" +
          "<td>" + movie.thumbnail_path + "</td>" +
          "<td>" + movie.description + "</td>" +
          "<td>" + movie.year_released + "</td>" +
          "<td>" + movie.language_released + "</td>" +
          "<td>" + "<button button id = \"deleteMovie\" type=\"button\" class=\"btn btn-danger\" data-toggle=\"modal\" data-target=\"#exampleModal\">Delete</button>" + "</td>" +
          "<td>" + "<button button id = \"editMovie\" type=\"button\" class=\"btn btn-danger\" data-toggle=\"modal\" data-target=\"#exampleModal\">Edit</button>" + "</td>";
        $("#movies").append(rowText);
      });
    }
  });
});
$.ajax({
   method:"DELETE",
   url: "http://localhost:3000/movielist/8",
   dataType: "json",
   success: function (data) {
     $.each(data, function(i, movie) {
    const rowText = "<tr>" +
         "<td>" + movie.idmovielist + "</td>" +
         "<td>" + movie.name + "</td>" +
         "<td>" + movie.thumbnail_path + "</td>" +
         "<td>" + movie.description + "</td>" +
         "<td>" + movie.year_released + "</td>" +
         "<td>" + movie.language_released + "</td>" +
         "<td>" + "<button button id = \"deleteMovie\" type=\"button\" class=\"btn btn-danger\" data-toggle=\"modal\" data-target=\"#exampleModal\">Delete</button>" + "</td>" +
         "<td>" + "<button button id = \"editMovie\" type=\"button\" class=\"btn btn-danger\" data-toggle=\"modal\" data-target=\"#exampleModal\">Edit</button>" + "</td>";
       $("#movies").append(rowText);
     });
   }
});
$.ajax({
    method:"PUT",
    url: "http://localhost:3000/movielist/6",
    dataType: "json",
    data: {
        idmovielist: 6,
        name: 'Lion King',
        thumanail_path: 'https://lumiere-a.akamaihd.net/v1/images/',
        description: 'cartoon',
        year_realeased: '2000',
        language_released: 'english'
    },
    success: function (data) {
      $.each(data, function(i, movie) {
       const rowText = "<tr>" +
          "<td>" + movie.idmovielist + "</td>" +
          "<td>" + movie.name + "</td>" +
          "<td>" + movie.thumbnail_path + "</td>" +
          "<td>" + movie.description + "</td>" +
          "<td>" + movie.year_released + "</td>" +
          "<td>" + movie.language_released + "</td>" +
          "<td>" + "<button button id = \"deleteMovie\" type=\"button\" class=\"btn btn-danger\" data-toggle=\"modal\" data-target=\"#exampleModal\">Delete</button>" + "</td>" +
          "<td>" + "<button button id = \"editMovie\" type=\"button\" class=\"btn btn-danger\" data-toggle=\"modal\" data-target=\"#exampleModal\">Edit</button>" + "</td>";
        $("#movies").append(rowText);
      });
    }
});
});

Поэтому всякий раз, когда я пытаюсь выполнить свой запрос на размещение, я всегда получаю эту ошибку с кодом состояния 404, не найденную, а также мои сообщения о получении и удалении работают нормально, это просто мой запрос на размещение, что я могу сделать, чтобы это исправить. Также мне удалось заставить это работать в моем веб-браузере, потому что я забыл добавить функцию

app.put('/movielist/id',(req,res) =>{
let update = req.body;
mysqlConnection.query("UPDATE movielist SET year_released = '2000' WHERE idmovielist = '6'",
[update.year_released, update.idmovielist,req.params.id],
(err, results)  => {
    if (!err) {
      res.send("Movie list is updated");
    } else {
      console.info(err);
    }
});
});

Также мой почтовый код запроса

app.post('/movielist/addMovie',(req, res) => {
   mysqlConnection.query("INSERT INTO movielist (idmovielist, name, thumnail_path, description, year_released,language_released) VALUES ('10', 'Bubble Gum', 'yourieiri.jpg', 'Disturbing', '2007', 'french');",
   req.body,
   (err,rows) => {
     if (!err) {
       res.send("Movie is added");
     } else {
       console.info(err);
     }
  });
});


  app.get('/movielist',(req,res)=> {
    mysqlConnection.query("SELECT * FROM movielist", (err, rows,fields)=> {
      if (!err) {
        res.send(rows);
      } else {
        console.info(err);
      }
    });
  });
 app.delete('/movielist/:id',(req,res) => {
    mysqlConnection.query("DELETE FROM movielist WHERE idmovielist = ?",[req.params.id],(err,rows,fields) =>{
      if (!err) {
        res.send("Movie is deleted");
      } else {
      console.info(err);
    }
    });
  });
app.post('/movielist/addMovie',(req, res) => {
   mysqlConnection.query("INSERT INTO movielist (idmovielist, name, thumnail_path, description, year_released,language_released) VALUES ('10', 'Bubble Gum', 'yourieiri.jpg', 'Disturbing', '2007', 'french');",
   req.body,
   (err,rows) => {
     if (!err) {
       res.send("Movie is added");
     } else {
       console.info(err);
     }
  });
});
app.put('/movielist/:id',(req,res) =>{
let update = req.body;
mysqlConnection.query("UPDATE movielist SET year_released = '2000' WHERE idmovielist = '6'",
[update.year_released, update.idmovielist,req.params.id],
(err, results)  => {
    if (!err) {
      res.send("Movie list is updated");
    } else {
      console.info(err);
    }
});
});

Почтальон

Если вы получаете 404, это проблема на стороне сервера (при условии, что URL-адреса, запрошенные на стороне клиента, верны). Поэтому, не зная, что происходит на стороне вашего сервера, трудно сказать.

Constantin Groß 08.04.2019 14:10

Может быть, вы можете поделиться кодом для бэкэнда.

vahdet 08.04.2019 14:11

Обновление без отправки каких-либо параметров на URL-адрес?

Hasitha Jayawardana 08.04.2019 14:22

@vahdet app.put('/movielist/id',(req,res) =>{ let update = req.body; mysqlConnection.query("ОБНОВЛЕНИЕ списка фильмов SET year_released = '2000' ГДЕ idmovielist = '6'", [ update.year_released, update.idmovielist,req.params.id], (ошибка, результаты) => { if (!err) { res.send("Список фильмов обновлен"); } else { console.info(ошибка) ; } }); });

Adil Ali 08.04.2019 14:29

@vahdet, это мой запрос на размещение в серверной части

Adil Ali 08.04.2019 14:30

Пожалуйста, добавьте его в тело вопроса с правильным форматированием, это не только для меня, для всех, кто сталкивался с вопросом.

vahdet 08.04.2019 14:32

@vahdet я это уже публиковал

Adil Ali 08.04.2019 14:39

Для бэкэнда вы используете nodejs с экспресс-фреймворком?

Aristotelis V 08.04.2019 14:48

@boobanos да я

Adil Ali 08.04.2019 14:56

Также, ребята, есть ли способ сделать мой пользовательский интерфейс более приятным и красивым?

Adil Ali 08.04.2019 15:01

@ Адил Али Я думаю, что вы делаете что-то не так в строках: let update = req.body; mysqlConnection.query("ОБНОВЛЕНИЕ списка фильмов SET year_released = '2000', ГДЕ idmovielist = '6'", [update.year_released, update.idmovielist,req.params.id],

Ajinkya 08.04.2019 16:34

@Adil Ali, если это возможно, также поделитесь бэкэнд-кодом для POST-запроса, чтобы мы могли сравнить и проверить

Ajinkya 08.04.2019 16:36

@Ajinkya я опубликую это

Adil Ali 08.04.2019 16:54

@Ajinkya, я добавил это

Adil Ali 08.04.2019 16:57
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
1
14
2 454
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, вам нужно изменить это:

app.put('/movielist/id',(req,res) =>{

к этому:

app.put('/movielist/:id',(req,res) =>{

В nodejs с экспресс-платформой, чтобы использовать /link/параметр/, параметр необходимо объявить с помощью :.

Я все еще получаю эту ошибку 404, даже когда исправляю ее в своем бэкэнде.

Adil Ali 08.04.2019 15:14

<!DOCTYPE html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>Ошибка</title> </head> <body> <pre>Невозможно поместить /movielist/6 </пре> </тело> </html>

Adil Ali 08.04.2019 15:17

Если после этого изменения почтальон вернет это, то проблема, вероятно, связана с плохой маршрутизацией. Можете ли вы опубликовать больше вашего внутреннего кода? Не целые функции, а только ваши объявления app.put(link), app.get(link)?

Aristotelis V 08.04.2019 17:38

Я разместил свой пост, поставив и удалив

Adil Ali 08.04.2019 23:19

Кажется, это работает для меня. Вы уверены, что почтальон возвращает этот результат после изменений?

Aristotelis V 09.04.2019 00:10

@boobsnos, так что метод put сработал, покажи мне, пожалуйста

Adil Ali 10.04.2019 00:05

@AdilAli Конечная точка создана просто отлично. Можете ли вы опубликовать скриншот от почтальона, когда вы делаете запрос PUT для /movielist/id ?

Aristotelis V 10.04.2019 11:40

Попробуйте удалить как «/:id» с сервера, так и «/id» из URL-адреса, когда вы делаете запрос и перезапускаете сервер. Похоже, что конечная точка вообще не создана. Какую версию экспресса вы используете?

Aristotelis V 10.04.2019 17:08

4.16.4 это тот, который я использую

Adil Ali 10.04.2019 17:50

В чем проблема, в конце концов?

Aristotelis V 11.04.2019 17:15

Я думаю, мне пришлось перезапустить сервер

Adil Ali 11.04.2019 21:06

Бэкенд-коду всегда требуется перезапуск сервера для применения любых изменений. Внешний интерфейс с другой стороны (ваш код jquery) запускается внутри браузера, поэтому каждый раз, когда вы обновляете страницу, код выполняется снова. Поскольку вы используете NodeJS, я рекомендую изучить инструмент нодмон. Это удобный инструмент, который автоматически перезапускает сервер, если вы что-то меняете в своем коде. (Также, пожалуйста, отметьте мой ответ как принятый, если он вам помог :))

Aristotelis V 11.04.2019 21:31

таким образом, я могу опубликовать сообщение и отправить запрос, не внося изменений в мой бэкэнд, например, попытаться внести изменения в сам интерфейс.

Adil Ali 12.04.2019 15:19

@AdilAli Я не уверен, что ты имеешь в виду. Можете ли вы перефразировать свой вопрос, возможно, с примером?

Aristotelis V 12.04.2019 17:07

Другие вопросы по теме