Что делает приложение.использовать(bodyParser.json ())` do?
для:
bodyParser.urlencoded({extended: ...})
мои исследования показали мне, что если extended: true
, затем вы можете анализировать вложенные объекты или вообще любой тип. Однако, если вы установите extended: false
, тогда вы можете анализировать только строки или массивы. Но что делает ...
app.use(bodyParser.json())
значит? То есть, да... Я знаю, что в документах упоминается, что он анализирует json. Но я все еще в замешательстве. Я заметил приложения, которые устанавливают extended: true
Не используйте bodyParser.json()
на всех. Но приложения, которые extended: false
стремятся использовать bodyParser.json()
. Почему так? В конце концов, оба приложения могут анализировать json.
во-вторых, какой рекомендуемый подход?
3 ответов
хорошо, вопреки тому, что я ранее думал, дальнейшие исследования показывают, что extended: true
и app.use(bodyParser.json())
можно использовать вместе. Так что это не только extended: false
, который его использует. Заявление app.use(bodyParser.json())
используется самостоятельно, если вы установите расширенный как true
или false
.
app.use(bodyParser.json())
в основном сообщает системе, что вы хотите использовать json.bodyParser.urlencoded({extended: ...})
в основном сообщает системе, хотите ли вы использовать простой алгоритм для мелкий синтаксический анализ (т. е. false) или сложный алгоритм глубокого анализа, который может иметь дело с вложенными объектами (т. е. true).
посмотрите на документы (т. е. https://expressjs.com/en/guide/migrating-4.html) для примера.
кодировка URL и кодировка JSON позволяют конвертировать (вложенный) объект в строку, но формат отличается. Строка, закодированная URL, как правило, не является допустимой строкой JSON.
одно приложение может использовать один метод кодирования, а другой другое. До тех пор, пока они не смешивают два, это будет работать.
bodyParser.json возвращает промежуточное ПО, которое анализирует только json. Этот парсер принимает любую кодировку Unicode тела и поддерживает автоматическую инфляцию кодировок gzip и deflate.
новый объект тела, содержащий проанализированные данные, заполняется на объекте запроса после промежуточного программного обеспечения (т. е. req.тело.)