Fetch API - 响应
Fetch API 提供了一个特殊的接口来创建对请求的响应,该接口的名称是 Response。 该接口提供了 Response() 构造函数来创建响应对象。 它提供了各种方法和属性来访问和处理响应数据。
构造函数
要创建响应对象,我们可以使用 Response() 构造函数和 new 关键字。 该构造函数可能包含也可能不包含参数。
语法
const newResponse = New Response() Or const newResponse = New Response(rBody) Or const newResponse = New Response(rBody, rOption)
Response() 构造函数具有以下参数 −
rBody − 它代表一个定义响应主体的对象。 它的值可以是 null(默认值)或 blob、ArrayBuffer、TypedArray、DataView、FormData、String、URLSearchParams、字符串文字或 ReadableStream。
Options − 它是一个对象,用于提供我们想要应用于响应的自定义设置,选项包括:
headers − 它用于向您的响应添加标头。 默认情况下该参数值为空。 它的值可以是 Header 对象或字符串的对象文字。
status − 该参数表示响应的状态代码。 其默认值为 200。
statusText − 该参数表示与状态代码相关的状态消息,例如"Not Found"。 它的默认值为""。
示例
在下面的程序中,我们使用 fetch() 函数从给定的 URL 获取数据,然后以 JSON 格式显示响应数据。
<!DOCTYPE html> <html> <body> <script> // Data const option = {message: "Hello Tom. How are you?"}; // creating header object const newResponse = new Response(JSON.stringify(option), { status: 200, statusText:" Receive data successfully" }); // Displaying response console.log(newResponse) </script> <h2>Fetch API Example</h2> <div> <!-- Displaying retrieved data--> <p id="sendData"></p> </div> </body> </html>
输出
实例属性
Response 接口提供的属性是只读属性。 所以常用的属性有 −
Sr.No. | 属性和描述 |
---|---|
1 | Response.body 该属性包含ReadableStream主体内容。 |
2 | Response.ok 此属性检查响应是否成功。 该属性的值是布尔值。 |
3 | Response.bodyUsed 该属性用于检查响应中是否使用了正文。 它的值为布尔值。 |
4 | Response.redirected 该属性用于检查响应是否是重定向的结果。 它的值是布尔值。 |
5 | Response.status 该属性包含响应的状态代码。 |
6 | Response.statusText 该属性根据状态码提供状态消息。 |
7 | Response.type 此属性提供响应的类型。 |
8 | Response.url 此对象提供响应的 URL。 |
9 | Response.header 此属性提供给定响应的 Header 对象。 |
示例
在下面的程序中,我们使用Response接口提供的属性。
<!DOCTYPE html> <html> <body> <h2>Fetch API Example</h2> <script> // GET request using fetch()function fetch("https://jsonplaceholder.typicode.com/todos") .then(response => { // Finding response URL console.log("URL is: ", response.url); // Getting response text console.log("Status Text: ", response.statusText); // Getting response status console.log("Status Code: ", response.status); }).catch(err =>{ // Handling error console.log("Found Error:", err); }); </script> </body> </html>
输出
方法
以下是Response接口的常用方法 −
Sr.No. | 方法及说明 |
---|---|
1 | Request.arrayBuffer() 此方法用于返回一个promise ,该promise 将使用响应正文的 ArrayBuffer 表示形式进行解析。 |
2 | Request.blob() 此方法用于返回一个promise ,该promise 将使用响应正文的 Blob 表示形式进行解析。 TD> |
3 | Request.clone() 该方法用于创建当前响应对象的副本。 |
4 | Request.json() 此方法用于将响应正文解析为 JSON 并返回一个将解析结果的 Promise。 |
5 | Request.text() 此方法用于返回一个promise ,该promise 将使用响应正文的文本表示形式进行解析。 |
6 | Request.formData() 此方法用于返回一个promise ,该promise 将使用响应正文的 FormData 表示形式进行解析。 < /td> |
7 | Response.error() 此方法返回与网络错误相关的新 Response 对象。 它是一个静态方法。 |
8 | Response.redirect 此方法返回具有不同 URL 的新 Response 对象。 它是一个静态方法。 |
9 | Response.json() 此方法为返回的 JSON 编码数据返回一个新的 Response 对象。 它是一个静态方法。 |
示例
在下面的程序中,我们使用Response接口提供的方法。 所以这里我们将使用 json() 函数来解析 JSON 格式的响应。
<!DOCTYPE html> <html> <body> <script> // GET request using fetch()function fetch("https://jsonplaceholder.typicode.com/todos/2", { // Method Type method: "GET"}) // Parsing the response data into JSON // Using json() function .then(response => response.json()) .then(myData => { // Display output document.getElementById("manager").innerHTML = JSON.stringify(myData); }).catch(newError =>{ // Handling error console.log("Found Error:", newError) }); </script> <h2>Display Data</h2> <div> <!-- Displaying retrevie data--> <table id = "manager"></table> </div> </body> </html>
输出
结论
这就是 Response 接口与 fetch API 配合使用的方式。 使用 Response 接口,我们可以提取并处理服务器提供的响应。 它还提供了用于提取和处理响应的各种方法和属性。 在下一篇文章中,我们将了解 fetch API 中的正文数据。