eagleye

HTTP 状态码工具函数文档

HTTP 状态码工具函数文档

概述

本文档介绍一个基于 TypeScript 的 HTTP 状态码工具函数库,提供状态码消息获取、类型判断、UI 集成等功能,覆盖全量标准 HTTP 状态码,确保类型安全与企业级应用可靠性。

核心类型与常量

1.HttpStatusCode类型

功能:定义支持的 HTTP 状态码集合,确保类型校验。

包含范围1xx(信息响应)、2xx(成功响应)、3xx(重定向)、4xx(客户端错误)、5xx(服务器错误)全量标准状态码。

export type HttpStatusCode =

| 100 | 101 | 102 | 103

| 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 226

| 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308

| 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410

| 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423

| 424 | 425 | 426 | 428 | 429 | 431 | 451

| 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511;

2.HTTP_STATUS_MESSAGES常量

功能:存储状态码与描述消息的映射关系,支持多语言友好的详细说明。

结构:按状态码类别分组(1xx-5xx),每个状态码对应准确的语义描述。

export const HTTP_STATUS_MESSAGES: Record<HttpStatusCode, string> = {

// 信息响应 (1xx)

100: '继续。客户端应继续其请求',

101: '切换协议。服务器根据客户端的请求切换协议',

// ... 2xx/3xx/4xx/5xx 状态码映射(完整覆盖所有 HttpStatusCode 类型)

404: '请求的资源不存在',

500: '服务器内部错误',

418: '我是一个茶壶。超文本咖啡壶控制协议,愚人节笑话', // 特殊状态码示例

};

主要工具函数

1.getHttpMessage

功能:根据 HTTP 状态码获取对应的描述消息。

参数statusCode: number- HTTP 状态码

返回值string- 状态码描述消息(未知状态码返回未知状态码: ${statusCode})

export const getHttpMessage = (statusCode: number): string => {

return HTTP_STATUS_MESSAGES[statusCode as HttpStatusCode] || `未知状态码: ${statusCode}`;

};

2. 错误状态判断函数

函数名

功能描述

参数

返回值

isErrorStatusCode

判断是否为错误状态码(4xx/5xx)

statusCode: number

boolean

isClientError

判断是否为客户端错误(4xx)

statusCode: number

boolean

isServerError

判断是否为服务器错误(5xx)

statusCode: number

boolean

代码示例

export const isErrorStatusCode = (statusCode: number): boolean => {

return statusCode >= 400 && statusCode < 600;

};

export const isClientError = (statusCode: number): boolean => {

return statusCode >= 400 && statusCode < 500;

};

export const isServerError = (statusCode: number): boolean => {

return statusCode >= 500 && statusCode < 600;

};

3. 状态码分类与属性函数

函数名

功能描述

返回值类型

getStatusCodeCategory

获取状态码类别(如“成功响应”)

string(信息响应/成功响应/重定向/客户端错误/服务器错误/未知)

getStatusCodeSeverity

获取严重程度

'info' \| 'warning' \| 'error'

getStatusCodeColorClass

获取UI颜色类名(适配Quasar)

string(如text-info/text-negative)

getStatusCodeIcon

获取UI图标名称(适配Quasar)

string(如info/error)

代码示例

export const getStatusCodeCategory = (statusCode: number): string => {

if (statusCode >= 100 && statusCode < 200) return '信息响应';

if (statusCode >= 200 && statusCode < 300) return '成功响应';

// ... 其他类别判断逻辑

};

组件集成示例

以错误对话框组件为例,展示如何结合工具函数实现状态码相关的动态UI展示:

// 错误对话框组件中导入工具函数

import {

getHttpMessage,

getStatusCodeCategory,

getStatusCodeSeverity,

getStatusCodeColorClass,

getStatusCodeIcon

} from '@/utils/httpMessages';

// 组件内计算属性(基于Vue3 Composition API示例)

const displayMessage = computed(() => {

return props.errorMessage || getHttpMessage(props.errorCode); // 优先使用自定义消息,否则自动获取

});

const statusCategory = computed(() => getStatusCodeCategory(props.errorCode));

const statusSeverity = computed(() => getStatusCodeSeverity(props.errorCode));

const statusColorClass = computed(() => getStatusCodeColorClass(props.errorCode));

const statusIcon = computed(() => getStatusCodeIcon(props.errorCode));

UI渲染示例(模板伪代码):

<template>

<q-dialog>

<q-card>

<q-card-section>

<q-icon :name="statusIcon" :class="statusColorClass" size="lg" />

<h5>{{ statusCategory }} ({{ props.errorCode }})</h5>

<p>{{ displayMessage }}</p>

</q-card-section>

</q-card>

</q-dialog>

</template>

使用示例

基础用法

// 获取状态码消息

console.log(getHttpMessage(200)); // "请求成功"

console.log(getHttpMessage(404)); // "请求的资源不存在"

console.log(getHttpMessage(418)); // "我是一个茶壶。超文本咖啡壶控制协议,愚人节笑话"

// 判断错误类型

console.log(isErrorStatusCode(200)); // false(成功响应)

console.log(isErrorStatusCode(503)); // true(服务器错误)

console.log(isClientError(403)); // true(客户端错误)

API错误处理场景

// 接口请求错误处理逻辑

const handleApiError = (error: any) => {

if (error.response) {

const { status: statusCode, data } = error.response;

const message = getHttpMessage(statusCode); // 自动匹配状态码消息

// 结合严重程度处理不同错误

if (getStatusCodeSeverity(statusCode) === 'error') {

reportCriticalError(statusCode, message, data); // 严重错误上报

}

// 显示错误对话框

showErrorDialog({

code: statusCode,

message,

details: data,

severity: getStatusCodeSeverity(statusCode),

});

}

};

设计特点

1. 完整覆盖:支持所有标准 HTTP 状态码(1xx-5xx),包含特殊状态码(如418“茶壶”)。

2. 类型安全:基于 TypeScript 类型系统,确保状态码参数与返回值的类型一致性,减少运行时错误。

3. 企业级功能:提供错误分类、严重程度判断、UI适配(颜色/图标)等工程化能力,满足复杂应用需求。

4. 语义化描述:每个状态码消息遵循 RFC 规范,准确反映 HTTP 标准语义,避免歧义。

5. 模块化设计:函数职责单一,支持按需导入(如仅使用getHttpMessage或错误判断函数)。

6. UI框架兼容:内置与 Quasar 等UI框架集成的辅助函数(getStatusCodeColorClass/getStatusCodeIcon),降低前端开发成本。

7. 可扩展性:通过HTTP_STATUS_MESSAGES常量统一管理消息,支持多语言扩展或自定义描述。

总结

该工具函数库为 HTTP 状态码处理提供了一站式解决方案,从基础的消息获取到高级的错误分类与UI集成,兼顾了类型安全、易用性和工程化需求,可直接用于企业级前端项目的错误处理模块。

 

posted on 2025-08-27 22:54  GoGrid  阅读(7)  评论(0)    收藏  举报

导航