Express - почему запрос PUT может выдать ошибку 404, если запрос POST работает должным образом? - PullRequest
0 голосов
/ 01 февраля 2020

Среда: Node.js & Express

Я использую форму HTML для отправки данных с запросом POST, и она работает, как и ожидалось. Однако когда я переключил его на запрос PUT, я получил 404 error. В адресной строке я получаю req.body из формы.

http://localhost:8080/save_register?email=test%40gmail.com&firstName=hello&lastName=world&phone=555-555-5555&password=11111&passwordConfirm=11111

Почему это может быть? Ниже приведена упрощенная версия моего сервера с использованием запроса PUT.

Из промежуточного программного обеспечения. js файл.

router.get('/register', function(req, res) {
    res.render('register');
});

router.put('/save_register', function(req, res) {

    // lets of processing req.body here...

    if(itWorked === true) {
        return res.redirect('/register_success');
    } else {
        res.render('register');
    }
});

router.get('*', function(req, res) {
    res.status(404).render('page_not_found');
});

из файла register.e js.

<form action="/save_register" method="PUT">

В промежуточном программном обеспечении. js, когда router.put изменяется на router.post, а в register.e js method="PUT" изменяется на method="POST", он работает как ожидалось Я, должно быть, упускаю что-то очевидное, но не вижу этого.

1 Ответ

1 голос
/ 01 февраля 2020

HTML формы не поддерживают метод PUT, только GET и POST. Если для метода формы вы указываете что-то отличное от GET или POST, браузер обрабатывает его как GET, и поэтому вы видите все данные, отправляемые в URL.

Как вы обнаружили, здесь есть довольно хорошее описание: Почему нет методов PUT и DELETE в HTML формах .

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