Apa perbedaan aktual antara res.send
dan res.json
karena keduanya tampaknya melakukan operasi yang sama dalam merespons klien.
Apa perbedaan aktual antara res.send
dan res.json
karena keduanya tampaknya melakukan operasi yang sama dalam merespons klien.
Jawaban:
Metode identik ketika suatu objek atau array dilewatkan, tetapi res.json()
juga akan mengkonversi non-objek, seperti null
dan undefined
, yang tidak valid JSON.
Metode ini juga menggunakan pengaturan json replacer
dan json spaces
aplikasi, sehingga Anda dapat memformat JSON dengan lebih banyak opsi. Opsi-opsi itu diatur seperti ini:
app.set('json spaces', 2);
app.set('json replacer', replacer);
Dan diteruskan ke JSON.stringify()
seperti:
JSON.stringify(value, replacer, spacing);
// value: object to format
// replacer: rules for transforming properties encountered during stringifying
// spacing: the number of spaces for indentation
Ini adalah kode dalam res.json()
metode yang tidak dimiliki metode kirim:
var app = this.app;
var replacer = app.get('json replacer');
var spaces = app.get('json spaces');
var body = JSON.stringify(obj, replacer, spaces);
Metode ini berakhir sebagai res.send()
pada akhirnya:
this.charset = this.charset || 'utf-8';
this.get('Content-Type') || this.set('Content-Type', 'application/json');
return this.send(body);
res.json
akhirnya menelepon res.send
, tetapi sebelum itu:
json spaces
dan json replacer
aplikasiMencari di header yang dikirim ...
res.send menggunakan tipe-konten: teks / html
res.json menggunakan tipe-konten: application / json
res.json
memaksa argumen ke JSON. res.send
akan mengambil objek atau array non-json dan mengirim tipe lain. Sebagai contoh:
Ini akan mengembalikan nomor JSON.
res.json(100)
Ini akan mengembalikan kode status dan mengeluarkan peringatan untuk menggunakan sendStatus.
res.send(100)
Jika argumen Anda bukan objek atau array JSON (null, undefined, boolean, string), dan Anda ingin memastikannya dikirim sebagai JSON, gunakan res.json
.