为什么将 AXIOS 与 Typescript 一起使用?

385 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 7 天,点击查看活动详情

我想通过比较 fetch 和 axis 来探索关于使用 typescript 使用 API 的帖子,但关注生产力

首先是第一件事。你知道 axios 是如何工作的以及它如何与 fetch 进行比较吗? 

好吧……在chatgpt 时代,我们不需要搜索那么多直接的答案,对吗?

我希望您遵循正确的问题路径,并在最重要的问题上与我分享。当您处理需要不同方法进行测试、调试、错误处理等的请求时,什么对您的公司和生产力最有利。您是决策者还是订单接受者?
所以让我们这样做......

考虑到 Axios 是一个 JavaScript 库,用于从浏览器或 Node.js 服务器发出 HTTP 请求。它类似于 fetch API,但它提供了一种更强大、更灵活的方式来发出 HTTP 请求。

Axios 通过创建 Axios 客户端的新实例并使用其方法(例如 get() 或 post())来发出所需的 HTTP 请求。来自服务器的响应作为 Promise 返回,可以使用 then() 和 catch() 方法进行处理。喜欢:

axios.get('https://api.example.com/data')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

因此,与 fetch API 相比,Axios 有几个优点,比如将响应转换为 JSON,这使得它更容易使用。它还具有用于处理错误的内置机制,这使得它比 fetch 更不容易出错。 

Axios 还允许您配置默认设置,例如应用于所有请求的标头,从而更轻松地使用需要身份验证或其他特定设置的 API。

当谈到用 JavaScript 发出 HTTP 请求时,Axios 和 fetch 是两个流行的选择。虽然两者各有优势,但使用 Axios 而不是 fetch 有几个提高生产力的好处。

虽然两者各有优势,但对于需要更强大、更灵活的 HTTP 请求解决方案的开发人员来说,Axios 可能是更好的选择。

在 TypeScript 中使用 API 时,使用类型化的 API 客户端库,例如 axios-typed-isomorphic 或 apisauce-ts,而不是内置的 fetch 函数。这些库提供了一种更加类型安全和用户友好的方式来发出 HTTP 请求和处理响应。

import axios from 'axios-typed-isomorphic'

interface User {
  id: number
  name: string
}

const getUsers = async (): Promise<User[]> => {
  const { data } = await axios.get<User[]>('https://my-api.com/users')
  return data
}

始终为您的 API 预期返回的数据类型定义接口,并使用它们对响应数据进行类型检查。这将帮助您尽早发现任何错误并使您的代码更易于维护。

interface User {
  id: number
  name: string
}

interface ApiResponse {
  data: User[]
  status: number
}

const getUsers = async (): Promise<ApiResponse> => {
  const { data } = await axios.get<ApiResponse>('https://my-api.com/users')
  return data
}

在 TypeScript 中使用 API 时遵循错误处理的最佳实践。例如,使用 try-catch 块来处理请求-响应循环中可能发生的错误,并向用户返回适当的错误代码或消息。
此外,最好为应用程序使用集中式错误处理中间件,以便在应用程序的不同部分以一致的方式处理错误。

interface User {
  id: number
  name: string
}

interface ApiResponse {
  data: User[]
  status: number
}

interface ApiError {
  message: string
  status: number
}

const getUsers = async (): Promise<ApiResponse | ApiError> => {
  try {
    const { data } = await axios.get<ApiResponse>('https://my-api.com/users')
    return data
  } catch (error) {
    return {
      message: error.message,
      status: error.response.status
    }
  }
}

总体而言,使用类型化的 API 客户端库(如 axios-typed-isomorphic 或 apisauce-ts)并遵循错误处理的最佳实践将帮助您在使用 TypeScript 中的 API 时编写更健壮和可维护的代码。

首先,Axios 拥有更加人性化的 API。它会自动将响应转换为 JSON,并具有用于处理错误的内置机制,使其更易于使用且不易出现错误。这可以缩短开发时间并减少调试时间。

其次,Axios 允许开发人员配置适用于所有请求的默认设置,例如标头。这可以更轻松地使用需要身份验证或其他特定设置的 API。这可以节省时间并减少向同一 API 发出多个请求时出错的机会。

第三,Axios 拥有庞大而活跃的开发人员社区,这可以成为故障排除和寻找常见问题解决方案的宝贵资源。这可以缩短解决时间并提高生产率。

总之,虽然 Axios 和 fetch 各有优势,但用户友好的 API、配置默认设置的能力以及庞大的开发人员社区使 Axios 成为科技公司更高效的选择。

这些好处可以缩短开发时间、减少错误并提高效率,使 Axios 成为希望改进其技术流程的公司的绝佳选择。