如何使用相同的标头优化API函数

倾倒

我正在使用访存来处理API,我必须将标头添加到每个API函数中,如下所示。它是如此重复。

getSomething: async() => {
    const user: IUserData = await JSON.parse(localStorage.getItem("token")!),
      userCompanies: ICompanies = await JSON.parse(localStorage.getItem("companies")!),
      companyId = Object.keys(userCompanies.Company)[0], meId = user.userInfo.data.id, myHeaders = new Headers();
    myHeaders.append("authorization", user.accessToken.token);
    myHeaders.append("company-id", companyId);

    const requestOptions: RequestInit = {
      headers: myHeaders,
      method: "GET",
      redirect: "follow"
    };

    return fetch(url + `/${meId}/calendars?type=tree`, requestOptions)
      .then((response) => response.json())
      .then((result) => result)
      .catch((error) => error);
  }

如何减少或优化它们?

zhuber

尝试fetch通过制作自己的GET方法进行抽象,例如

async function get(url: string, options?: RequestInit) {
    const user: IUserData = await JSON.parse(localStorage.getItem("token")!);
    const userCompanies: ICompanies = await JSON.parse(localStorage.getItem("companies")!);
    const companyId = Object.keys(userCompanies.Company)[0];
    const meId = user.userInfo.data.id;
    
    const myHeaders = new Headers();
    myHeaders.append("authorization", user.accessToken.token);
    myHeaders.append("company-id", companyId);
    
  const baseOptions: RequestInit = {
    headers: myHeaders,
    method: "GET",
    redirect: "follow"
  };

  // merge passed options with your baseOptions

  let baseUrl = 'your-base-url';
  return fetch(baseUrl + `/${meId}/${url}`, baseOptions)
    .then((response) => response.json())
    .then((result) => result)
    .catch((error) => error);
}

getSomething: async() => {
  return get('/calendars?type=tree')
}

这只是一个想法,因为我不确定哪些参数可在许多不同的请求中重用。您甚至可能最终baseGet只能处理所有请求共享的核心功能,然后拥有baseCompanyGet抽象的功能baseGet并且仅由公司请求使用,等等。

这个想法是识别要重复的代码并将其放入某种基本方法中,而您仅通过方法参数传递动态数据。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Kafka(node-rdkafka)发送标头并在消费者中使用相同的标头

对每个请求使用相同的标头

如何使用Microsoft图形API获取响应标头

如何使用Javscript格式化API请求的标头?

如何使用JavaScript Fetch API发送授权,Cookie标头

如何使用 rxjs 从后端 api 获取标头属性?

如何读取从我的API使用angular发送的标头?

如何使用C#从API中的请求获取标头

如何使用@RequestMapping标头?

如何使用 <format> 标头

Azure函数-如何返回位置标头

在循环内使用标头函数

如何使用相同的方法和不同的标头简化REST控制器?

如何在Node.js中使用相同的键设置多个http标头字段?

如何避免使用相同的SOAP标头重复进行WSDL操作

使用Fetch API读取响应标头

如何使用Jquery Ajax发送自定义标头并使用C#在WCF服务中检索相同的标头值?

使用python向Stackoverflow API发出请求时,如何通过标头传递我的API密钥

如何使用TypeScript将快速标头作为字符串传递给函数?

如何使用fread函数读取data.table中的数字标头?

如何使用标头模拟HttpServletRequest?

如何使用python的urllib设置标头?

如何使用Mechanize获取请求标头?

如何使用Bash解析HTTP标头?

如何使用Reqwest设置请求标头?

如何使用飞镖获取冰封标头

如何使用HttpTestingController刷新标头?

使用XDomainRequest时如何获取标头

如何使用Vuetify反转标头方向?