Как узел захватывает данные из формы? - PullRequest
0 голосов
/ 05 февраля 2019

соответствующая строка из файла ejs:

<form action="/foo" method="post">

файл app.js:

var express = require('express')
var bodyParser = require('body-parser')

// I'm having trouble understanding this line
app.post('/foo', urlencodedParser, function (req, res) {

  res.send('welcome, ' + req.body.username)
})

Когда мы нажимаем кнопку отправки в файле ejs, данные прикрепляются кобъект запроса "/ foo.

Имеет ли app.js доступ к объекту запроса из-за вызова этой функции function(req, res)? Как-то мне кажется, что мы делаем новый запрос.

Также, какова цель первого параметра - то есть "app.post ( '/ foo' "?

Ответы [ 3 ]

0 голосов
/ 05 февраля 2019

Это ваш app.js, прослушивающий порт 3000

var express = require('express')
var app = express();
var bodyParser = require('body-parser')

app.post('/foo', urlencodedParser, function (req, res) {

  res.send('welcome, ' + req.body.username)
});

 //starting server
 app.listen('3000',function(){
 console.log("App started on port 3000.");
 });

Здесь вы храните экземпляр express в переменной express, он будет иметь все функции express.Теперь мы начинаем выражение, вызывая его конструктор, ниже это делает строка.

var app = express();

Здесь ниже мы создаем экземпляр body-parser , который помогает нам прочитать тело запроса в нашемПриложение узла.

var bodyParser = require('body-parser')

Теперь мы используем body-parser в нашем приложении следующим образом:

app.use(bodyParser.json())

В приведенной выше строке мы анализируем тело запроса в формате json, чтобы мы могли получить доступ к нему.тело запроса в формате json.

Теперь переменная приложения будет прослушивать некоторые порты, например, 3000, после этого, когда пользователь отправляет форму, например, такую ​​форму:

<form action="/foo" method="post">

Для приведенной выше формы, когдапользователь отправляет, и в фоновом режиме мы уже запустили наше приложение для узла, оно будет прослушивать маршрут '/ foo' через метод 'post', поэтому при переходе по маршруту '/ foo' с методом post он перейдет кТело функции и запустить его:

app.post('/foo', urlencodedParser, function (req, res) {
        res.send('welcome, ' + req.body.username)
}

В вышеприведенной функции мы отправляем ответ обратно с именем пользователя, объединенным с сообщением, 'username', которое мы получили из тела запроса.

0 голосов
/ 05 мая 2019

может достичь этого в следующих шагах

  1. создать объект экспресс-модуля var app = express();
  2. создать экземпляр анализатора тела, который поможет нам прочитать тело запроса внаше приложение узла.var parser = require('body-parser')
  3. используйте парсер в нашем приложении app.use(bodyParser.json()); здесь вы получите тело запроса в формате json
  4. когда пользователь отправляет форму, наше приложение узла работает в фоновом режимепрослушайте маршрут '/ foo' методом post.поэтому, когда будет достигнут маршрут '/ foo' с методом post, он перейдет в тело функции и запустит его.

  5. эта функция отправляет ответ с именем пользователя (мы получили из тела запроса) с сообщением.

следующее: - какова цель [app.post ('/ foo' "], когда пользователь отправляет форму, наше приложение узла, которое работает в фоновом режиме, прослушивает '/foo 'route с методом post (сервер получает запрос, имеющий / foo). поэтому, когда удаляется маршрут' / foo 'с методом post, он переходит в тело своей функции и запускает его.

0 голосов
/ 05 февраля 2019
/*
 * POST request (when server receive a request from the client, normally used for 
 * inserting data into the storage system
 */

// app.post('foo', ...) is an endpoint whenever a server receives a request having '/foo' in the last e.g. http://localhost:3000/foo, the below function do some tasks

app.post('/foo', urlencodedParser, function (req, res) { // Route handler having /foo in the end of the URL
  res.send('welcome, ' + req.body.username)
})

...