Saya pikir Anda menggabungkan penggunaan response
objek dengan objek request
.
The response
objek adalah untuk mengirimkan kembali respon HTTP ke klien menelepon, sedangkan Anda ingin mengakses tubuh request
. Lihat jawaban ini yang menyediakan beberapa panduan.
Jika Anda menggunakan JSON yang valid dan POSTING dengannya Content-Type: application/json
, maka Anda dapat menggunakan bodyParser
middleware untuk mem-parsing badan permintaan dan menempatkan hasilnya di request.body
rute Anda.
var express = require('express')
, app = express.createServer();
app.use(express.bodyParser());
app.post('/', function(request, response){
console.log(request.body); // your JSON
response.send(request.body); // echo the result back
});
app.listen(3000);
Uji sepanjang garis:
$ curl -d '{"MyKey":"My Value"}' -H "Content-Type: application/json" http://127.0.0.1:3000/
{"MyKey":"My Value"}
Diperbarui untuk Express 4+
Body parser dipecah menjadi paket npm sendiri setelah v4, membutuhkan instalasi terpisah npm install body-parser
var express = require('express')
, bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
app.post('/', function(request, response){
console.log(request.body); // your JSON
response.send(request.body); // echo the result back
});
app.listen(3000);
Pembaruan untuk Express 4.16+
Dimulai dengan rilis 4.16.0, express.json()
middleware baru tersedia.
var express = require('express');
var app = express();
app.use(express.json());
app.post('/', function(request, response){
console.log(request.body); // your JSON
response.send(request.body); // echo the result back
});
app.listen(3000);
request.body.MyKey
toString()
pada objek. Lihatlah node docs untukconsole.log
, karena memeriksa objek dan mengembalikan representasi string.console.log('request =' + JSON.stringify(request.body))
console.log()
akan secara otomatis merangkai objek (melaluiutil.inspect()
), jadi ini akan berhasil:console.log("with request", request.body);
Untuk Express v4 +
instal body-parser dari npm.
https://www.npmjs.org/package/body-parser#installation
sumber
Terkadang Anda tidak perlu pustaka pihak ketiga untuk mem-parse JSON dari teks. Terkadang yang Anda butuhkan adalah perintah JS berikut, coba dulu:
sumber
body
Bagi yang mendapatkan objek kosong
req.body
Saya lupa mengatur
headers: {"Content-Type": "application/json"}
permintaan. Mengubahnya memecahkan masalah.sumber
text/json
dan menerima{}
sebagai tanggapan. Pengawasan total pada bagian saya. Sangat membantu.@Daniel Thompson menyebutkan bahwa dia lupa menambahkan {"Tipe-Konten": "application / json"} dalam permintaan . Ia dapat mengubah permintaan, namun, mengubah permintaan tidak selalu mungkin (kami sedang mengerjakan server di sini).
Dalam kasus saya, saya perlu memaksa tipe konten: teks / polos untuk diuraikan sebagai json.
Jika Anda tidak dapat mengubah jenis konten permintaan, coba gunakan kode berikut:
Alih-alih menggunakan express.json () secara global, saya lebih suka menerapkannya hanya jika diperlukan, misalnya dalam permintaan POST:
sumber
App.use ini (express.json) sekarang akan membiarkan Anda membaca objek JSON posting masuk
sumber