Несколько способов для Express отправить данные

Node.js задняя часть WeChat Express

Мы знаем, что протокол HTTP — это спецификация прикладного уровня, основанная на протоколе TCP/IP, который передается в коде ASCII. Спецификация делит HTTP-запрос на три части: строку состояния, заголовок запроса и тело сообщения. Что-то вроде этого:

<method> <request-url> <version>

<headers>

<entity-body></entity-body></headers></version></request-url></method>

Протокол предусматривает, что данные, отправленные POST, должны быть помещены в тело сообщения (entity-body), но протокол не определяет, какую кодировку должны использовать данные. На самом деле разработчик может полностью определить формат тела сообщения, если окончательный HTTP-запрос соответствует указанному выше формату.

Однако когда данные отправляются, это имеет смысл только в том случае, если сервер успешно их анализирует. Обычные серверы, такие как Node.js, php, python, java и т. д., а также их фреймворки имеют встроенные функции для автоматического анализа распространенных форматов данных. Сервер обычно узнает, как кодируется тело сообщения в запросе, в соответствии с полем Content-Type в заголовке запроса, а затем анализирует тело. Итак, когда дело доходит до схемы отправки данных POST, она включает две части: Content-Type и кодировку тела сообщения.
Что касается метода отправки данных POST, подробное содержание не будет представлено, см.
Четыре распространенных метода отправки данных POST.

Ладно, переходим к полнометражному фильму >>>
Для платформы Node Express необходимо обработать четыре основных формата:

1.www-форма-urlencoded

По умолчанию используется почтовый запрос http. Обратите внимание, что это метод отправки по умолчанию. Например, если вы пишете

<form>....<input type="submit" /></form>

форма формы, кнопка отправки внутри по умолчанию такаяwww-form-urlencodedпредставленный метод.
Мы используемbody-parserЭтот плагин в порядке, пожалуйста, нажмите на ссылку для конкретного использования.

2. данные формы

Отправка формы по умолчаниюwww-form-urlencoded, но когда вам нужно загрузить файл, вы должныformэтикетка вот такenctype="multipart/form-data".
Для обработки таких форм в Node также требуется одно из следующих промежуточных программ.

Важно отметить, что данные формы трех плагинов могут обрабатываться сами по себе.www-form-urlencoded, так что если вам нужно обрабатывать поля и файлы одновременно, вам не нужно вводить их сноваwww-form-urlencodedсопутствующие плагины.

Три.application/json

bodyParser поддерживает такой анализ параметров.

Примечание. Перед отправкой необходимо указать в заголовке http-запроса значение content-type=application/json.

Четыре.текст/xml

Этот тип запроса не особенно распространен, и body-parse по умолчанию не анализирует этот формат данных, но, поскольку платформа Tencent WeChat в настоящее время использует этот формат обмена данными, она по-прежнему использует множество интерфейсов, связанных с WeChat. в экспресс-формате нет хорошего способа, вы можете использовать код только для его обработки, прочитать параметры тела запроса в виде строки, а затем использовать пакет xml2json для разбора строки в объект json, что намного удобнее использовать.

const express = require('express'),
    bodyParser = require('body-parser'),
    xml2json=require('xml2json'),
    app = express(),
    server = require('http').createServer(app);

app.use(bodyParser.urlencoded({
  extended: true
}));

app.post('/xml', function (req, res) {
  req.rawBody = '';
  let json={};
  req.setEncoding('utf8');

  req.on('data', function(chunk) { 
    req.rawBody += chunk;
  });

  req.on('end', function() {
      json = xml2json.toJson(req.rawBody);
      res.send(JSON.stringify(json));
  });

});

const PORT = process.env.PORT || 8002;
server.listen(PORT);

Второй способ — использовать промежуточное ПО для WeChat,wechat-parser .
Последнее рекомендуется.