Fetch API - Body 正文数据
Fetch API 是一种无需刷新网页即可异步发送或接收数据的现代技术。 它提供了一个在 Web 浏览器中创建 HTTP 请求的接口。 几乎所有现代网络浏览器都支持它。 我们还可以说,通过使用 Fetch API,我们可以从 Web 服务器获取 JSON 数据、HTML 页面等资源,并可以使用不同的 HTTP 请求(如 PUT、POST 等)将数据发送到服务器。所以在本文中, 我们将了解什么是身体数据,以及我们将如何使用身体数据。
Body 正文数据
在 Fetch API 中,请求和响应都包含正文数据。 请求中的正文数据是一个实例,其中包含我们要发送到服务器的数据,而响应中的正文数据是一个包含用户请求的数据的实例。 它通常由 PUT 或 POST 请求用来向服务器发送数据。 它可以是 ArrayBuffer、TypedArray、DataView、Blob、File、String、URLSearchParams 或 FormData 的实例。 发送正文数据时,还需要在请求中设置标头,以便服务器知道数据的类型。
Request和Response接口提供了多种提取body的方法,它们是 −
Request. arrayBuffer() − 此方法用于解析具有请求正文的 ArrayBuffer 表示形式的promise 。
Request.blob() − 此方法用于解析带有请求正文的 blob 表示形式的promise 。
Request.formData() − 此方法用于解析具有请求正文的 formData 表示形式的promise 。
Request.json() − 该方法用于将请求体解析为 JSON,并使用解析结果解析一个 Promise。
Request.text() − 此方法用于解析具有请求正文的文本表示形式的promise 。
Response.arrayBuffer() − 此方法用于返回一个promise ,该promise 将使用响应正文的 ArrayBuffer 表示形式进行解析。
Response.blob() − 此方法用于返回一个promise ,该promise 将使用响应正文的 Blob 表示形式进行解析。
Response.formData() − 此方法用于返回一个promise ,该promise 将使用响应正文的 FormData 表示形式进行解析。
Response.json() − 此方法用于将响应正文解析为 JSON 并返回一个将解析解析结果的 Promise。
Response.text() − 此方法用于返回一个promise ,该promise 将使用响应正文的文本表示形式进行解析。
所有这些方法都会返回一个promise ,该promise 将根据正文的实际内容进行解析。
正文数据通常与 fetch() 函数一起使用。 这里是可选的,只有当你想向服务器发送数据时才可以使用body参数。
语法
fetch(resourceURL,{ Method: 'POST', body:{ Name: "Monika", Age: 34, City: "Pune" }, headers: {'content-Type':'application/json'} })
fetch() 函数的参数 −
resourceURL − 它代表我们要获取的资源。 它可以是字符串、请求对象或资源的 URL。
method − 表示GET、POST、PUT、DELETE等请求方法。
headers − 它用于向您的请求添加标头。
body − 它用于向您的请求添加数据。 GET 或 HEAD 方法不使用它。
在下面的程序中,我们使用 POST 方法发送正文数据。 因此,我们创建一个 HTML 代码,在其中使用 JavaScript 脚本将数据发送到服务器。 在脚本中,我们定义了一个 fetch() 函数,该函数使用 POST 请求方法将 body 参数中存在的数据发送到给定的 URL。 这里标头设置为"application/json",这表明我们正在发送数据。 在将请求发送到服务器之前,我们借助 JSON.stringify() 函数将数据转换为 JSON 字符串。 收到服务器的响应后,我们检查响应是否正确。 如果是,那么我们使用 response.json() 函数将响应正文解析为 JSON,然后将结果显示在输出屏幕上。 如果我们收到任何错误,则该错误将由 catch() 块处理。
示例
<!DOCTYPE html> <html> <body> <script> // Retrieving data from the URL using the POST request fetch("https://jsonplaceholder.typicode.com/todos", { // Adding POST request method: "POST", // Adding body which we want to send body: JSON.stringify({ id: 45, title: "Tom like finger chips", age: 34 }), // Adding header headers:{"Content-type": "application/json; charset=UTF-8"} }) // Converting received information into JSON .then(response =>{ if (response.ok){ return response.json() } }) .then(myData => { // Display the retrieve Data console.log("Data Sent Successfully"); // Display output document.getElementById("sendData").innerHTML = JSON.stringify(myData); }).catch(err=>{ console.log("Found error:", err) }); </script> <h2>Sent Data</h2> <div> <!-- Displaying retrevie data--> <p id = "sendData"></p> </div> </body> </html>
输出
结论
因此,这就是我们在 Fetch API 中使用 Body Data 的方式。 使用数据体,我们可以将数据从 Web 浏览器发送到 Web 服务器,反之亦然。 在请求正文中,正文数据仅与 PUT 和 POST 请求方法一起使用,因为使用此请求我们可以将数据发送到服务器。 它不与 GET 请求一起使用,因为 GET 请求用于从服务器获取数据。 在下一篇文章中,我们将学习 Fetch API 中的凭据。