• 前端调用API出现错误的最佳处理实践
  • 发布于 2个月前
  • 259 热度
    0 评论
应用程序接口(API)提供了一种与不同服务进行通信和交换信息的方式。然而,在通信过程中,存在潜在的故障点。例如,在查询用户数据的API时,API可能找不到记录,权限受限以查看某些信息,或者服务器完全故障。在通信层之间,可能会出现一些问题。

在我们的前端应用程序中,如果我们不处理大多数这些边缘情况并向用户报告有意义的信息,用户将无法知道出了什么问题,这可能会导致糟糕的用户体验。一个完美实现的前端必须处理所有可能的边缘情况,以提供流畅的用户体验。在本文中,我们将探讨处理API错误的有效和高效方法,向用户提供有意义的反馈和解决问题的指导。

下面的实现已经处理了各种边缘情况并报告了有意义的信息。请看下面。我们的目标是处理大多数边缘情况并显示有关任何错误的信息提示。
<template>
  <h1>Get Bookmarks</h1>
  <button @click="fetchUserBookmarks">Bookmarks</button>
</template>

<script setup lang="ts">
import axios, { AxiosError } from "axios";
import { useToast } from 'vue-toastification';
const url = 'https://api.example.com';
const toast = useToast();
const fetchUserBookmarks = async () => {
  try {
    const response = await axios.get(url);
    // 堆代码 duidaima.com
    // Handle the data as needed (e.g., update state, display bookmarks, etc.)
    const data = response.data;
    console.log(data);
  } catch (error: any) {
    handleError(error)
};
function handleError(error: unknown){
  if (error instanceof AxiosError && error.response) {
      // Check for specific status codes and show toast messages accordingly
      const statusCode = error.response.status;
      if (statusCode === 404) {
        toast.error('Not found: The requested resource was not found.');
      } else if (statusCode === 429) {
        toast.warning('Rate Limited: Too many requests, please try again later.');
      } else if (statusCode >= 500) {
        toast.error('Server Error: An internal server error occurred.');
      } else if (error.message === 'Network Error') {
        //implement retry here
        toast.error('No internet connection. Please check your network connection.');
      }
    } else if (error.request) {
      // The request was made, but no response was received
      toast.error('No response received from the server.');
    } else {
      // A different error occurred here
      toast.error('An unexpected error occurred:');
      console.log(error)
    }
  }
}
</script>
在处理前端API错误处理时,需要考虑一些最佳实践。
实施捕获块:将API请求包装在try-catch块中,以优雅地处理异常和错误。这样可以防止整个应用程序因未处理的API错误而崩溃。
解析错误响应:API通常以JSON格式返回详细的错误响应。解析这些响应以提取相关信息,如错误消息或错误代码,并以用户友好的方式呈现给用户。
使用HTTP状态码:注意API返回的HTTP状态码。不同的状态码表示不同类型的错误(例如,404表示未找到,500表示服务器错误)。在前端代码中适当地处理每个状态码。
显示用户友好的消息:向用户显示清晰简洁的错误消息,描述出了什么问题,并提供解决问题的指导。避免向最终用户显示原始的技术细节,因为这可能会令人困惑,甚至存在安全风险。
记录错误:在客户端记录API错误,以收集有价值的数据进行调试和故障排除。然而,在生产环境中要小心不要记录敏感信息。
重试机制:为瞬态错误(例如网络超时)实现一个重试机制,以便API有机会从临时问题中恢复。但是,避免过多的重试,以防止过载API并触发速率限制机制。
超时:设置合理的API请求超时时间,以防止前端无限期地等待响应。如果请求超时,考虑提供用户友好的消息。
处理网络错误:除了处理特定于API的错误之外,还要处理网络错误,例如连接失败或CORS(跨域资源共享)问题。显示适当的消息或引导用户检查他们的互联网连接。
提供联系信息:在出现关键错误或问题的情况下,考虑提供联系信息或支持链接,以便用户报告问题或寻求帮助。
本地化:如果您的应用程序已国际化,请确保错误消息也进行本地化,以满足不同地区的用户需求。
自动化测试:编写自动化测试来模拟API错误,并确保错误处理机制按预期工作。
安全注意事项:在错误信息中小心不要暴露敏感信息,因为攻击者可能利用这些数据来了解系统的漏洞。

通过遵循这些API错误处理最佳实践,您可以构建一个前端应用程序,有效地处理错误,保持平稳的用户体验,并在计划外发生问题时向用户提供有用的反馈。
用户评论