一、res.json()文件
res.json()是用於在Express中返回JSON數據的方法。這種方法使用了 MIME類型application/json, 通過響應對象將JSON數據作為響應主體發回給客戶端。其本質是一個簡化了的替代res.send()的方法。
下面是一個示例代碼,演示如何在Express應用程序中使用res.json()方法,從一個文件中讀取JSON數據並返回給客戶端:
const express = require('express'); const fs = require('fs'); const app = express(); app.get('/users', (req, res) => { fs.readFile('./users.json', (err, data) => { if (err) throw err; res.json(JSON.parse(data)); }); }); app.listen(3000, () => { console.log('Server started on port 3000'); });
運行以上代碼後,通過訪問localhost:3000/users 獲取users.json文件的JSON數據,並返回給客戶端。
二、res.jsonp()方法
res.jsonp()方法接受一個JavaScript對象,它會轉換為JSON並用JavaScript函數包裝。 這樣,客戶端就可以通過在頁面中定義回調函數來進行JSONP請求。
以下是一個示例代碼演示如何使用res.jsonp()方法返回JSONP響應:
const express = require('express'); const app = express(); app.get('/users', (req, res) => { const users = [ { name: 'John', age: 25 }, { name: 'Jane', age: 20 }, { name: 'Jim', age: 30 }, ]; res.jsonp(users); }); app.listen(3000, () => { console.log('Server started on port 3000'); });
以上代碼中,訪問localhost:3000/users會得到一個JSONP響應。 在客戶端,如果定義了一個回調函數myFunction,則函數將被調用並傳入JSON響應。
三、res.json()方法
與res.jsonp()方法類似,res.json()方法也接受一個JSON兼容對象,返回JSON響應。 區別在於res.json()方法不支持JSONP回調函數選項。
以下是一個示例代碼演示如何使用res.json()方法返回JSON響應:
const express = require('express'); const app = express(); app.get('/users', (req, res) => { const users = [ { name: 'John', age: 25 }, { name: 'Jane', age: 20 }, { name: 'Jim', age: 30 }, ]; res.json(users); }); app.listen(3000, () => { console.log('Server started on port 3000'); });
以上代碼中,訪問localhost:3000/users將得到一個JSON響應。
四、res.json()方法報錯
在使用res.json()方法時,有時會出現錯誤。常見的錯誤包括發送狀態碼(奇數)和發送正文之後(意外地)再次發送正文。 這可以通過使用res.writeHead()方法來矯正。
以下是一個示例代碼演示如何使用res.json()方法矯正錯誤:
const express = require('express'); const app = express(); app.get('/users', (req, res) => { const users = [ { name: 'John', age: 25 }, { name: 'Jane', age: 20 }, { name: 'Jim', age: 30 }, ]; res.json(users); res.writeHead(200, {'Content-Type': 'application/json'}); }); app.listen(3000, () => { console.log('Server started on port 3000'); });
以上代碼中,使用res.writeHead()方法矯正了在res.json()方法中出現的錯誤,從而避免了發送狀態碼和正文的問題。
五、res.json()方法ajax
res.json()方法可以使用在ajax請求中,使得伺服器返回JSON格式的數據,從而方便客戶端對返回的數據進行處理。
以下是一個示例代碼演示如何使用res.json()方法作為ajax請求的響應:
const express = require('express'); const app = express(); app.get('/users', (req, res) => { const users = [ { name: 'John', age: 25 }, { name: 'Jane', age: 20 }, { name: 'Jim', age: 30 }, ]; res.json(users); }); app.listen(3000, () => { console.log('Server started on port 3000'); });
以上代碼中,訪問localhost:3000/users將得到一個JSON響應,這個JSON響應可以在ajax請求中使用。
六、res.json和res.send區別
res.json()和res.send()方法都可以用來返回JSON數據。 區別在於res.json()可以保證發送正確的MIME類型並完全兼容JSON.stringify()方法,而res.send()僅將數據解釋為字元串或HTML,然後將Content-Type設置為”text/html”。
以下是一個示例代碼演示res.json()和res.send()方法之間的區別:
const express = require('express'); const app = express(); app.get('/users', (req, res) => { const users = [ { name: 'John', age: 25 }, { name: 'Jane', age: 20 }, { name: 'Jim', age: 30 }, ]; res.json(users); }); app.get('/users-html', (req, res) => { const users = [ { name: 'John', age: 25 }, { name: 'Jane', age: 20 }, { name: 'Jim', age: 30 }, ]; res.send(users); }); app.listen(3000, () => { console.log('Server started on port 3000'); });
以上代碼中,訪問localhost:3000/users將得到一個JSON響應,而訪問localhost:3000/users-html將得到一個HTML響應。
七、res.json返回什麼對象
res.json()返回的是JSON編碼的數據,用於向客戶端發送JSON響應。具體返回的是一個{「name」:」value」}這樣的格式的數據結構。
以下是一個示例代碼演示res.json()方法返回的JSON對象結構:
const express = require('express'); const app = express(); app.get('/users', (req, res) => { const users = [ { name: 'John', age: 25 }, { name: 'Jane', age: 20 }, { name: 'Jim', age: 30 }, ]; res.json(users); }); app.listen(3000, () => { console.log('Server started on port 3000'); });
以上代碼中,訪問localhost:3000/users將得到一個JSON格式的對象數組。
八、res.jsonp()傳送JSON數據
res.jsonp()方法用於發送JSONP響應(包裹在回調函數中的JSON)。 回調函數的名稱是通過查詢字元串中的參數名指定的。
以下是一個示例代碼演示如何使用res.jsonp()方法傳送JSON數據:
const express = require('express'); const app = express(); app.get('/users', (req, res) => { const users = [ { name: 'John', age: 25 }, { name: 'Jane', age: 20 }, { name: 'Jim', age: 30 }, ]; res.jsonp(users); }); app.listen(3000, () => { console.log('Server started on port 3000'); });
以上代碼中,訪問localhost:3000/users將得到JSONP格式的響應。
結束語
本文中我們介紹了如何在 Express 中使用 res.json() 方法,包括 res.json() 文件、res.jsonp()、res.json() 方法、res.json() 方法報錯、res.json() 方法 AJAX、res.json() 和 res.send() 區別、res.json() 方法返回的對象以及 res.jsonp() 方法傳送 JSON 數據。希望這篇文章能夠幫助您更好地理解res.json()方法。
原創文章,作者:UONC,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/143697.html