Автор оригинала: Scott Robinson.
Вступление
В этой краткой статье мы пойдем, как извлечь информацию из почтового органа в Express.js. Протокол HTTP предоставляет ряд способов передачи информации от клиента на сервер, при этом почтовые органы являются наиболее гибким и наиболее часто используемым методом для отправки данных через HTTP.
Еще один способ, который обычно используется для различных случаев использования, заключается в том, чтобы передать информацию с использованием строк запросов или параметры URL-адреса. Для получения дополнительной информации о том, как получить строки и параметры запросов в Express.js.
Для этой статьи я предполагаю, что у вас есть опыт работы с Node.js и создавая простые Express.js серверы.
Отправка почтовых данных на http
Данные могут быть отправлены через HTTP Post Call по многим причинам, с некоторыми из наиболее распространенных существ через HTML <ФОРМА>
или запрос API. Данные могут принимать несколько разных форм, с наиболее распространенным существом:
Приложение/X-WWW-Form-urlencoded
: Данные в этом кодировке отформатированы как строка запроса, которую вы увидите в URL-адресе, причем раскрывается значением ключа Paris&
символы. Например:foo = bar & abc = 123 и стек = злоупотребление
Отказ Это кодировка по умолчанию.Мультипартные/формы-данные
: Это кодирование обычно используется для отправки файлов. Короче говоря, каждое значение ключа отправляется в тот же запрос, но разные «части», которые разделены «границами» и включают в себя больше метаданных.Текст/простой
: Эти данные только что отправляются как неструктурированный простой текст, и обычно не используется.
Необработанный HTTP Post запрос с Приложение/X-WWW-Form-urlencoded
Кодировка может выглядеть что-то подобное:
POST /signup HTTP/1.1 Host: example.com Content-Type: application/x-www-form-urlencoded Content-Length: 53 username=scott&password=secret&website=stackabuse.com
Извлечение пост данных
Прежде чем мы сможем начать доступ к данным пост-данных сразу же, нам нужно правильно настроить наше приложение Express. Эта конфигурация должна быть выполнена, поскольку не все серверы веб-приложений нуждаются в расстановке тела, а какое измерение тела включено, зависит от вашего приложения.
Чтобы установить это, мы будем использовать Тело-парсер Пакет, который может обрабатывать много форм данных. Этот пакет является промежуточное программное обеспечение Это перехватывает сырье и анализирует его в форме, которую ваш прикладной код может легко использовать.
// index.js const express = require('express'); const bodyParser = require('body-parser'); const app = express(); app.use(bodyParser.urlencoded({ extended: true })); app.post('/post-test', (req, res) => { console.log('Got body:', req.body); res.sendStatus(200); }); app.listen(8080, () => console.log(`Started server at http://localhost:8080!`));
Обратите внимание, как мы называем app.use (...)
до Определение нашего маршрута. Приказ здесь имеет значение. Это гарантирует, что Тело-парсер
Запускается до нашего маршрута, что гарантирует, что наш маршрут может затем получить доступ к анализу HTTP Post Body.
Чтобы проверить это, мы сначаем начнем приложение Express, а затем использовать Curl
Утилита в другом консольном окне:
$ curl -d "username=scott&password=secret&website=stackabuse.com" -X POST http://localhost:8080/post-test OK
$ node index.js Started server at http://localhost:8080! Got body: { username: 'scott', password: 'secret', website: 'stackabuse.com' }
Здесь вы можете видеть, что данные строки запросов были проанализированы на объект JavaScript, который мы можем легко получить доступ.
Еще одна важная вещь, которую следует отметить, это наше использование Расширенные
Опция при звонке bodyparser.urlencoded
Отказ Используя Расширенные
Опция рассказывает Тело-парсер
использовать QS
Библиотека для анализа данных закодированных URL-адресами. Это позволяет вещам, такие как объекты и массивы, которые должны быть закодированы в формат закодирования URL-адреса.
И пока URLENCODED
является одним из наиболее часто используемых парсеров, которые Тело-парсер
Предоставляет, вы также можете использовать следующее:
.json ()
: Разбирается в формате JSON, отформатированный текст для тела сContent-Type
Приложение/JSON
Отказ.raw ()
: Анаразсывает HTTP Cody в AБуфер
Для указанного пользовательскогоContent-Type
S, хотя по умолчанию принятоContent-Type
этоПриложение/октет-поток
Отказ.Text ()
: Анализирует HTTP-тел сContent-Type
Текст/простой
, который возвращает его как простой строку.
Каждый из этих парсеров также поддерживает автоматическую инфляцию данных, кодируемых с помощью Гжип или деформировать , поэтому сжатие все еще можно прозрачно использовать без какой-либо дополнительной работы вашим приложенным кодом.
Великая вещь о модели промежуточного программного обеспечения и как этот пакет анализирует данные, это то, что вы не застряли, чтобы использовать только один парсер. Вы можете включить один или больше Парсер для вашего приложения, чтобы убедиться, что все типы данных обрабатываются правильно:
// index.js const express = require('express'); const bodyParser = require('body-parser'); const app = express(); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); app.use(bodyParser.raw()); // ...
Так что теперь, если мы должны были отправить запрос на почту HTTP с JSON в качестве тела, он будет проанализирован в обычный объект JSON в req .body
имущество:
POST /post-test HTTP/1.1 Host: localhost:8080 Content-Type: application/json Content-Length: 69 '{"username":"scott","password":"secret","website":"stackabuse.com"}'
$ node index.js Started server at http://localhost:8080! Got body: { username: 'scott', password: 'secret', website: 'stackabuse.com' }
Заключение
Наиболее распространенный способ отправки разнообразных и больших объемов данных через HTTP состоит в том, чтобы использовать метод Post. Прежде чем мы сможем легко получить доступ к этим данным на стороне сервера в Express, нам нужно использовать промежуточное программное обеспечение, например Тело-парсер
Пакет для анализа данных в формате, который мы можем легко получить доступ. После того, как данные из необработанного HTTP Presc на анализу, это может быть доступ через Тело
Собственность req
объект.
В этой статье немного объяснили различные типы/кодировки контента, как использовать Тело-парсер
Пакет и его различные варианты и как получить доступ к анализируемым данным. Если вы видите какие-либо проблемы или есть предложения, не стесняйтесь оставить комментарий ниже.