Sự khác biệt thực sự giữa res.send
và res.json
vì cả hai dường như thực hiện cùng một hoạt động trả lời khách hàng.
Sự khác biệt thực sự giữa res.send
và res.json
vì cả hai dường như thực hiện cùng một hoạt động trả lời khách hàng.
Câu trả lời:
Các phương thức giống hệt nhau khi một đối tượng hoặc mảng được truyền, nhưng res.json()
cũng sẽ chuyển đổi các đối tượng không, chẳng hạn như null
và undefined
không phải là JSON hợp lệ.
Phương thức này cũng sử dụng các cài đặt json replacer
và json spaces
ứng dụng, vì vậy bạn có thể định dạng JSON với nhiều tùy chọn hơn. Các tùy chọn này được đặt như vậy:
app.set('json spaces', 2);
app.set('json replacer', replacer);
Và được thông qua JSON.stringify()
như vậy:
JSON.stringify(value, replacer, spacing);
// value: object to format
// replacer: rules for transforming properties encountered during stringifying
// spacing: the number of spaces for indentation
Đây là mã trong res.json()
phương thức mà phương thức gửi không có:
var app = this.app;
var replacer = app.get('json replacer');
var spaces = app.get('json spaces');
var body = JSON.stringify(obj, replacer, spaces);
Phương thức kết thúc như một res.send()
kết thúc:
this.charset = this.charset || 'utf-8';
this.get('Content-Type') || this.set('Content-Type', 'application/json');
return this.send(body);
res.json
cuối cùng gọi res.send
, nhưng trước đó nó:
json spaces
và json replacer
ứng dụngTìm kiếm trong các tiêu đề được gửi ...
res.send sử dụng loại nội dung: text / html
res.json sử dụng loại nội dung: application / json
res.json
buộc đối số thành JSON. res.send
sẽ lấy một đối tượng hoặc mảng không phải json và gửi một kiểu khác. Ví dụ:
Điều này sẽ trả về một số JSON.
res.json(100)
Điều này sẽ trả về mã trạng thái và đưa ra cảnh báo để sử dụng sendStatus.
res.send(100)
Nếu đối số của bạn không phải là một đối tượng hoặc mảng JSON (null, không xác định, boolean, chuỗi) và bạn muốn đảm bảo nó được gửi dưới dạng JSON, hãy sử dụng res.json
.