如何在 HTML5 中调用 Web 服务?
简介
调用 Web 服务是网络上最常用的服务之一。它指的是与软件系统通信的方式。这种通信可以发生在客户端与服务器之间、对等之间等等。HTML5 作为 HTML 的最新版本,提供了许多方法,例如 XMLHttpRequest 对象、Axios 和 fetch 等 API 以及 WebSockets 等。此 API 允许用户根据需要获取静态的、实时的或动态的内容。
在本文中,我们将学习如何使用不同的方法(例如调用 API、WebSockets 等)来调用 Web 服务。
XMLHttpRequest
由于其广泛的灵活性和优势,它是开发人员的热门选择。它允许在不重新加载页面的情况下更新页面,这广泛用于聊天、新闻等应用程序中。它允许客户端计算机在加载特定页面后请求数据。这使得网页具有高度的动态性。此外,客户端计算机还可以在显示页面的同时在后台向服务器发送数据。
示例
<!DOCTYPE html> <html lang="en"> <body> <div id="data"></div> <script> var xhr = new XMLHttpRequest(); xhr.open("GET", "https://reqres.in/api/users?page=2", true); xhr.onreadystatechange = function () { if (this.readyState === 4 && this.status === 200) { var response = JSON.parse(this.responseText); var dataDiv = document.getElementById("data"); dataDiv.innerHTML = JSON.stringify(response); } }; xhr.send(); </script> </body> </html>
解释
这段 HTML 代码从位于 "https://reqres.in/api/users?page=2" 的 Web 服务 API 获取数据。JavaScript 代码向此 API 发送 XMLHttpRequest 并等待响应。
如果响应成功(即状态为 200),则将其解析为 JSON 并通过设置 ID 为“data”的 <div> 元素的 innerHTML 在 HTML 文档中显示。这会导致数据显示在网页上。
Fetch API
Fetch API 是 XMLHttpRequest 对象的现代替代品。它提供了一种更简单、更强大的调用 Web 服务的方法。Fetch API 基于 Promise,并支持 REST 和 SOAP Web 服务。
示例
<!DOCTYPE html> <html lang="en"> <body> <table id="data-table"> <thead> <tr> <th>ID</th> <th>Email</th> <th>First Name</th> <th>Last Name</th> <th>Avatar</th> </tr> </thead> <tbody></tbody> </table> <script> fetch("https://reqres.in/api/users?page=2") .then((response) => response.json()) .then((data) => { var dataTable = document.getElementById("data-table"); var tbody = dataTable.getElementsByTagName("tbody")[0]; data.data.forEach((user) => { var row = document.createElement("tr"); var idCell = document.createElement("td"); idCell.innerHTML = user.id; var emailCell = document.createElement("td"); emailCell.innerHTML = user.email; var firstNameCell = document.createElement("td"); firstNameCell.innerHTML = user.first_name; var lastNameCell = document.createElement("td"); lastNameCell.innerHTML = user.last_name; var avatarCell = document.createElement("td"); avatarCell.innerHTML = "<img src='" + user.avatar + "' />"; row.appendChild(idCell); row.appendChild(emailCell); row.appendChild(firstNameCell); row.appendChild(lastNameCell); row.appendChild(avatarCell); tbody.appendChild(row); }); }); </script> </body> </html>
解释
这段代码使用 fetch API 从 Web 服务 URL "https://reqres.in/api/users?page=2" 获取数据。然后,它创建一个包含 ID、电子邮件、名字、姓氏和头像列的表格,并使用 DOM 操作方法使用从 URL 获取的数据填充表格。最后,它在网页上显示表格。
WebSockets API
WebSockets API 是一种双向通信协议,它使客户端和服务器之间能够进行实时通信。WebSockets API 适用于需要实时更新的应用程序,例如聊天应用程序和在线游戏。
在 VS Code 中打开一个文件夹,并在终端中运行以下命令:
yarn add ws or npm install ws
现在创建一个 JavaScript 文件,例如 index.js
在其中添加以下代码:
const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 8080 }); wss.on('connection', function connection(ws) { console.log('WebSocket connection established.'); ws.on('message', function incoming(message) { console.log(`Received message: ${message}`); ws.send(`You said: ${message}`); }); ws.on('close', function close() { console.log('WebSocket connection closed.'); }); ws.on('error', function error(err) { console.error('WebSocket error:', err); }); });
运行代码。
创建一个名为“index.html”的 HTML 文件,并在其中添加以下代码:
<!DOCTYPE html> <html lang="en"> <body> <script> const socket = new WebSocket("ws://127.0.0.1:8080"); socket.addEventListener("open", (event) => { console.log("WebSocket connection established."); socket.send("Hello, server!"); const body = document.querySelector("body"); const message = document.createElement("p"); message.textContent = "WebSocket connection established!"; body.appendChild(message); }); socket.addEventListener("message", (event) => { console.log(`Received message: ${event.data}`); }); socket.addEventListener("close", (event) => { console.log("WebSocket connection closed."); }); socket.addEventListener("error", (event) => { console.error("WebSocket error:", event.error); }); </script> </body> </html>
如果连接成功,您将收到以下消息:
WebSocket 连接已建立!
解释
此处的 JavaScript 代码用于与服务器交互。它在端口号 8080 上建立连接。我们定义了四个函数,即连接、传入、关闭和错误,具体取决于生命周期方法。
接下来,我们创建了 HTML 文件,首先在 localhost 端口 8080 上建立连接。如果我们成功建立了连接,我们就在前端显示了成功消息。
结论
在 HTML5 中,可以使用 JavaScript API(例如 XMLHttpRequest 或 Fetch API)来调用 Web 服务,允许开发人员发出 HTTP 请求以检索和处理各种格式的数据。这使得能够创建可以与外部服务和数据库交互的动态网页。但是,开发人员应根据具体需求选择合适的方法。