{"id":443,"date":"2026-04-16T15:37:00","date_gmt":"2026-04-16T07:37:00","guid":{"rendered":"https:\/\/mitongxue.cn\/?p=443"},"modified":"2026-06-16T20:38:01","modified_gmt":"2026-06-16T12:38:01","slug":"umi%e5%b0%81%e8%a3%85request","status":"publish","type":"post","link":"https:\/\/mitongxue.cn\/index.php\/2026\/04\/16\/umi%e5%b0%81%e8%a3%85request\/","title":{"rendered":"umi\u5c01\u88c5request"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Umi4 \u4e2d <code>umi-request<\/code> \u4e0d\u518d\u5185\u7f6e\uff0c\u9700\u8981\u624b\u52a8\u5b89\u88c5\u4f9d\u8d56\u3002<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u89e3\u51b3\u6b65\u9aa4<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. \u5b89\u88c5 umi-request<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>pnpm add umi-request\n# npm\nnpm install umi-request<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>import { extend } from 'umi-request';\nimport { message } from 'antd';\nimport { history } from 'umi';\n\nconst request = extend({\n  prefix: '\/react_oa_api',\n  timeout: 10000,\n  headers: {\n    'Content-Type': 'application\/json',\n  },\n});\n\nrequest.interceptors.request.use((url, options) => {\n  const token = sessionStorage.getItem('token');\n  if (token) {\n    options.headers = {\n      ...options.headers,\n      Authorization: token,\n    };\n  }\n  return {\n    url,\n    options,\n  };\n});\n\nrequest.interceptors.response.use(async (response, options) => {\n  const data = await response.clone().json();\n  \n  if (data.code !== 0) {\n    message.error(data.msg || '\u8bf7\u6c42\u5931\u8d25');\n    history.replace('\/users\/login');\n    sessionStorage.clear();\n    throw new Error(data.msg || '\u8bf7\u6c42\u5931\u8d25');\n  }\n  \n  const token = response.headers.get('Authorization');\n  if (token) {\n    sessionStorage.setItem('token', token);\n  }\n  \n  return data;\n}, (error) => {\n  if (error.response) {\n    message.error(`\u7f51\u7edc\u9519\u8bef ${error.response.status}`);\n  } else if (error.request) {\n    message.error('\u7f51\u7edc\u8bf7\u6c42\u5931\u8d25');\n  } else {\n    message.error(`\u8bf7\u6c42\u914d\u7f6e\u9519\u8bef: ${error.message}`);\n  }\n  \n  return {\n    code: -1,\n    data: false,\n    msg: error.message || '\u7f51\u7edc\u8bf7\u6c42\u5931\u8d25',\n  };\n});\n\nconst Http = {\n  post(url, params = {}, options = {}) {\n    return request.post(url, {\n      data: params,\n      ...options,\n    });\n  },\n\n  put(url, params = {}, options = {}) {\n    return request.put(url, {\n      data: params,\n      ...options,\n    });\n  },\n\n  get(url, params = {}, options = {}) {\n    return request.get(url, {\n      params,\n      ...options,\n    });\n  },\n\n  delete(url, params = {}, options = {}) {\n    return request.delete(url, {\n      params,\n      ...options,\n    });\n  },\n};\n\nexport default Http;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Umi4 \u4e2d umi-request \u4e0d\u518d\u5185\u7f6e\uff0c\u9700..<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16,12,11],"tags":[29],"class_list":["post-443","post","type-post","status-publish","format-standard","hentry","category-js","category-react-","category-front","tag-umi"],"featured_image_urls":{"full":"","thumbnail":"","medium":"","medium_large":"","large":"","1536x1536":"","2048x2048":""},"author_info":{"info":["\u9648 \u67d0\u4eba"]},"category_info":"<a href=\"https:\/\/mitongxue.cn\/index.php\/category\/front\/js\/\" rel=\"category tag\">JS<\/a> <a href=\"https:\/\/mitongxue.cn\/index.php\/category\/front\/react-%e5%89%8d%e7%ab%af\/\" rel=\"category tag\">React<\/a> <a href=\"https:\/\/mitongxue.cn\/index.php\/category\/front\/\" rel=\"category tag\">\u524d\u7aef<\/a>","tag_info":"\u524d\u7aef","comment_count":"0","_links":{"self":[{"href":"https:\/\/mitongxue.cn\/index.php\/wp-json\/wp\/v2\/posts\/443","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mitongxue.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mitongxue.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mitongxue.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mitongxue.cn\/index.php\/wp-json\/wp\/v2\/comments?post=443"}],"version-history":[{"count":1,"href":"https:\/\/mitongxue.cn\/index.php\/wp-json\/wp\/v2\/posts\/443\/revisions"}],"predecessor-version":[{"id":444,"href":"https:\/\/mitongxue.cn\/index.php\/wp-json\/wp\/v2\/posts\/443\/revisions\/444"}],"wp:attachment":[{"href":"https:\/\/mitongxue.cn\/index.php\/wp-json\/wp\/v2\/media?parent=443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mitongxue.cn\/index.php\/wp-json\/wp\/v2\/categories?post=443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mitongxue.cn\/index.php\/wp-json\/wp\/v2\/tags?post=443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}