No Image

Node js express post

СОДЕРЖАНИЕ
356 просмотров
10 марта 2020

Here is my simple form:

Here is my Express.js/Node.js code:

I tried sReq.query.email or sReq.query[’email’] or sReq.params[’email’] , etc. None of them work. They all return undefined .

When I change to a Get call, it works, so .. any idea?

19 Answers 19

Things have changed once again starting Express 4.16.0, you can now use express.json() and express.urlencoded() just like in Express 3.0.

This was different starting Express 4.0 to 4.15:

The rest is like in Express 3.0:

Firstly you need to add some middleware to parse the post data of the body.

Add one or both of the following lines of code:

Then, in your handler, use the req.body object:

Note that the use of express.bodyParser() is not recommended.

. is equivalent to:

Security concerns exist with express.multipart() , and so it is better to explicitly add support for the specific encoding type(s) you require. If you do need multipart encoding (to support uploading files for example) then you should read this.

Security concern using express.bodyParser()

While all the other answers currently recommend using the express.bodyParser() middleware, this is actually a wrapper around the express.json() , express.urlencoded() , and express.multipart() middlewares (http://expressjs.com/api.html#bodyParser). The parsing of form request bodies is done by the express.urlencoded() middleware and is all that you need to expose your form data on req.body object.

Due to a security concern with how express.multipart() / connect.multipart() creates temporary files for all uploaded files (and are not garbage collected), it is now recommended not to use the express.bodyParser() wrapper but instead use only the middlewares you need.

Note: connect.bodyParser() will soon be updated to only include urlencoded and json when Connect 3.0 is released (which Express extends).

So in short, instead of .

and if/when you need to handle multipart forms (file uploads), use a third party library or middleware such as multiparty, busboy, dicer, etc.

Маршрутизация определяет, как приложение отвечает на клиентский запрос к конкретному адресу (URI). Вводную информацию о маршрутизации можно найти в разделе Основы маршрутизации.

Приведенный ниже код служит примером одного из самых простых маршрутов.

Методы Route

Метод route является производным от одного из методов HTTP и присоединяется к экземпляру класса express .

Приведенный ниже код служит примером маршрутов, определенных для методов запросов GET и POST к корневому каталогу приложения.

Express поддерживает перечисленные далее методы маршрутизации, соответствующие методам HTTP: get , post , put , head , delete , options , trace , copy , lock , mkcol , move , purge , propfind , proppatch , unlock , report , mkactivity , checkout , merge , m-search , notify , subscribe , unsubscribe , patch , search и connect .

Читайте также:  Как открывать файлы dll

Для методов route, преобразуемых в недействительные имена переменных JavaScript, используйте нотацию в квадратных скобках. Например, app[‘m-search’](‘/’, function .

Существует особый метод маршрутизации, app.all() , не являющийся производным от какого-либо метода HTTP. Этот метод используется для загрузки функций промежуточной обработки в пути для всех методов запросов.

В приведенном ниже примере обработчик будет запущен для запросов, адресованных “/secret”, независимо от того, используется ли GET, POST, PUT, DELETE или какой-либо другой метод запроса HTTP, поддерживаемый в модуле http.

Пути маршрутов

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

В Express для сопоставления путей маршрутов используется path-to-regexp; в документации к path-to-regexp описаны все возможные варианты определения путей маршрутов. Express Route Tester – удобный инструмент для тестирования простых маршрутов в Express, хотя и не поддерживает сопоставление шаблонов.

Строки запросов не являются частью пути маршрута.

Ниже приводятся примеры путей маршрутов на основе строк.

Данный путь маршрута сопоставляет запросы с корневым маршрутом, / .

Данный путь маршрута сопоставляет запросы с /about .

Данный путь маршрута сопоставляет запросы с /random.text .

Ниже приводятся примеры путей маршрутов на основе шаблонов строк.

Приведенный ниже путь маршрута сопоставляет acd и abcd .

Этот путь маршрута сопоставляет abcd , abbcd , abbbcd и т.д.

Этот путь маршрута сопоставляет abcd , abxcd , abRABDOMcd , ab123cd и т.д.

Данный путь маршрута сопоставляет /abe и /abcde .

Символы ?, +, * и () представляют собой подмножества соответствующих им регулярных выражений. Дефис (-) и точка (.) интерпретируются буквально в путях на основе строк.

Примеры путей маршрутов на основе регулярных выражений:

Данный путь маршрута сопоставляет любой элемент с “a” в имени маршрута.

Данный маршрут сопоставляет butterfly и dragonfly , но не butterflyman , dragonfly man и т.д.

Обработчики маршрутов

Для обработки запроса можно указать несколько функций обратного вызова, подобных middleware. Единственным исключением является то, что эти обратные вызовы могут инициировать next(‘route’) для обхода остальных обратных вызовов маршрута. С помощью этого механизма можно включить в маршрут предварительные условия, а затем передать управление последующим маршрутам, если продолжать работу с текущим маршрутом не нужно.

Обработчики маршрутов могут принимать форму функции, массива функций или их сочетания, как показано в примерах ниже.

Одна функция обратного вызова может обрабатывать один маршрут. Например:

Один маршрут может обрабатываться несколькими функциями обратного вызова (обязательно укажите объект next ). Например:

Массив функций обратного вызова может обрабатывать один маршрут. Например:

Читайте также:  Режим эмуляции карты nfc

Маршрут может обрабатываться сочетанием независимых функций и массивов функций. Например:

Методы ответа

Методы в объекте ответа ( res ), перечисленные в таблице ниже, могут передавать ответ клиенту и завершать цикл “запрос-ответ”. Если ни один из этих методов не будет вызван из обработчика маршрута, клиентский запрос зависнет.

Метод Описание
res.download() Приглашение загрузки файла.
res.end() Завершение процесса ответа.
res.json() Отправка ответа JSON.
res.jsonp() Отправка ответа JSON с поддержкой JSONP.
res.redirect() Перенаправление ответа.
res.render() Вывод шаблона представления.
res.send() Отправка ответа различных типов.
res.sendFile Отправка файла в виде потока октетов.
res.sendStatus() Установка кода состояния ответа и отправка представления в виде строки в качестве тела ответа.

app.route()

Метод app.route() позволяет создавать обработчики маршрутов, образующие цепочки, для пути маршрута. Поскольку путь указан в одном расположении, удобно создавать модульные маршруты, чтобы минимизировать избыточность и количество опечаток. Дополнительная информация о маршрутах приводится в документации Router().

Ниже приведен пример объединенных в цепочку обработчиков маршрутов, определенных с помощью функции app.route() .

express.Router

С помощью класса express.Router можно создавать модульные, монтируемые обработчики маршрутов. Экземпляр Router представляет собой комплексную систему промежуточных обработчиков и маршрутизации; по этой причине его часто называют “мини-приложением”.

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

Создайте файл маршрутизатора с именем birds.js в каталоге приложения со следующим содержанием:

Потом загрузите модуль маршрутизации в приложение:

Данное приложение теперь сможет обрабатывать запросы, адресованные ресурсам /birds и /birds/about , а также вызывать специальную функцию промежуточной обработки timeLog данного маршрута.

Founder of Codeforgeek. Technologist. Published Author. Engineer. Content Creator. Teaching Everything I learn!

POST and GET are two common HTTP Request used for building REST API’s. Both of these calls are meant for some special purpose.

As per the documentation GET request are meant to fetch data from specified resource and POST are meant to submit data to a specified resource.

LIVE DEMO DOWNLOAD
Express allows you to handle GET and POST request using the instance of express. Due to the depreciation of connect middle-ware handling POST request however seems confusing to many people.

If you are new to Node and Express then you won’t regret taking our Node course. Its FREE!

GET request:

Handling GET request in Express seems so easy. You have to create instance of express and call get method. Here is small snippet to demonstrate that.

Читайте также:  Почему ютуб пишет произошла ошибка

GET request can be cached and remains in browser history. This is why GET is not supposed to use for sensitive data (passwords, ATM pins, etc). GET are suppose to use to retrieve data only.

POST Request:

Express version 4 and above require extra middle-ware layer to handle a POST request. This middle-ware is called as ‘bodyParser’. This used to be an internal part of Express framework but now you have to install it separately.

You can install bodyParser by two way. Either by mentioning it in package.json or simply executing following command to download and put it in package file.

You have to import this package in your project and tell Express to use this as middle-ware. To do so here is a code.

Once configured you can use app.post express router to handle POST request. To access the POST query variable you can use request_variable.body.post_variable.
Here is a snippet to demonstrate the code.

In this way you can handle the GET and POST request in Express 4.

Demo App : Login System

To demonstrate this i am going to code one simple log-in System which will use GET request to serve HTML page to client and POST request from client to send user name and password to Server. So let’s create our package.json file.

Install dependencies using

Next we will create Express web Server.

Run Server using

We will use Express Router to handle routes of app. So when user request the app from web browser, we will serve the HTML file.

When user click on log-in button on HTML page we will POST request to Server and get the response.

Here is complete Server code.

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

app. use ( bodyParser. urlencoded ( < extended : false >) ) ;
app. use ( bodyParser. json ( ) ) ;

app. get ( ‘/’ , function ( req , res ) <
res. sendfile ( "index.html" ) ;
> ) ;
app. post ( ‘/login’ , function ( req , res ) <
var user_name = req. body . user ;
var password = req. body . password ;
console. log ( "User name = " + user_name + ", password is " + password ) ;
res. end ( "yes" ) ;
> ) ;
app. listen ( 3000 , function ( ) <
console. log ( "Started on PORT 3000" ) ;
> )

On front-end we will create simple HTML file and call the POST request using Ajax. Here is a code of HTML page.

Here is a video of developing app.

Комментировать
356 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock
detector