Ajax 简明教程

Fetch API - Status Codes

Fetch API 提供了一个用于查找请求状态的特殊属性,该属性的名称为状态属性。它是 Response 接口的一个只读属性,它返回由给定请求的服务器发送的响应的 HTTP 状态码。例如,404 - 找不到资源,200 - 成功,400 - 错误的请求等。它得到了所有现代网络浏览器的支持。

Syntax

response.status

状态属性返回的值是一个无符号短整型,它表示当前请求的状态。

Status Codes

HTTP 状态返回的状态码如下:

Successful

成功的状态码是在请求成功完成后服务器将返回的状态码。一些常用的成功状态码及其含义如下:

Status

Message

Description

200

OK

如果请求可以。

201

Created

当请求完成并创建了一个新资源。

202

Accepted

当请求被服务器接受。

204

No Content

当响应主体中没有数据。

205

Reset Content

对于其他输入,浏览器会清除用于事务的表单。

206

Partial Content

当服务器返回指定大小的部分数据。

Redirection

重定向状态代码是表征重定向响应状态的状态代码。常用重定向状态代码及其说明如下 −

Status

Message

Description

300

Multiple Choices

它用于表征链接列表。因此,用户可以选择任何一个链接并前往该位置。它只允许五个位置。

301

Moved Permanently

当请求的页面移动到新 URL。

302

Found

当请求的页面在不同的 URL 中找到。

304

Not modified

URL is not modified.

Client Error

客户端错误状态代码表征在请求期间客户端发生的错误。或者可以说,它们通知客户端,由于错误,请求未成功。常用客户端错误状态代码及其说明如下 −

Status

Message

Description

400

Bad Request

服务器无法完成请求,因为请求格式错误或者具有无效语法。

401

Unauthorised

请求需要身份验证,并且用户未提供有效凭证。

403

Forbidden

服务器了解该请求,但无法完成它。

404

Not Found

找不到请求的页面。

405

Method Not Allowed

通过该请求进行请求的方法不受该页面支持。

406

Not Acceptable

客户无法接受服务器生成的响应。

408

Request Timeout

Server timeout

409

Conflict

请求由于请求中的冲突而未完成。

410

Gone

请求的页面不可用。

417

Exception Failed

服务器不匹配 Expect 请求头字段的要求。

Server Error

服务器错误状态代码表示请求期间服务器端发生的错误。或者我们可以说它们通知客户端由于服务器出现错误,请求未成功。以下是常用的一些服务器错误状态代码及其说明 −

Status

Message

Description

500

Internal Server Error

当服务器在处理请求时遇到错误。

501

Not Implemented

当服务器不识别请求方法或无法满足请求时。

502

Bad Gateway

当服务器作为网关并从另一台服务器(上游)恢复无效响应时。

503

Service Unavailable

当服务器不可用或关闭时。

504

Gateway Timeout

当服务器作为网关且未及时从另一台服务器(上游)收到响应时。

505

HTTP Version Not Supported

当服务器不支持 HTTP 协议版本时。

511

Network Authentication Required

当客户端需要验证以获取对网络的访问权限时。

Example 1: Finding status code using fetch() function

在以下程序中,我们找到当前请求的状态代码。为此,我们从给定的 URL 获取数据。如果服务器返回的响应为 OK,则显示状态代码。如果不是,则显示请求失败状态。如果出现错误,则此代码使用 catch() 函数来处理错误。

<!DOCTYPE html>
<html>
<body>
<script>
   fetch("https://jsonplaceholder.typicode.com/todos")
   .then(response=>{
      if (response.ok){

      const mystatus = response.status;

      // Display output in HTML page
      document.getElementById("sendData").innerHTML = JSON.stringify(mystatus);
      }else{
         console.log("Request Fail:", mystatus);
      }
   })
   // Handling error
   .catch(err =>{
      console.log("Error is:", err)
   });
</script>
<h2>Status code of request</h2>
<div>
   <p>Status of the current request is </p>
   <!-- Displaying data-->
   <p id = "sendData"></p>
</div>
</body>
</html>

Output

status code

Example 2: Finding status code using fetch() function with async/await

在以下程序中,我们找到当前请求的状态代码。为此,我们创建了一个异步函数。在此函数中,我们使用 fetch() 函数从给定的 URL 提取数据。如果服务器返回的响应为 OK,则在控制台日志中显示状态代码。如果不是,则显示请求失败状态。如果我们遇到错误,此代码将使用 catch() 函数来处理该错误。

<!DOCTYPE html>
<html>
<head>
<title>Fetch API Example</title>
</head>
<body>
<h1>Example of Fetch API</h1>
<script>
   async function getStatus() {
      try {
         const myResponse = await fetch("https://jsonplaceholder.typicode.com/todos");

         // Finding the status of the request
         console.log("Status of the request:", myResponse.status);
         console.log(myResponse);
      } catch (err) {
         console.log("Error is:", err);
      }
   }
   getStatus();
</script>
</body>
</html>

Output

status code1

Conclusion

因此,这是我们如何找到服务器返回的当前请求的状态代码的方法。使用这些状态代码,我们可以执行各种操作,例如检查请求是否成功、处理指定的错误,或对服务器返回的响应执行适当的操作。现在在下一篇文章中,我们将看到 Fetch API 如何处理错误。