feat: 添加版本号

pull/49/head
zjx0905 2023-04-19 21:36:06 +08:00
parent 5469471cea
commit e3346a866f
17 changed files with 263 additions and 186 deletions

View File

@ -28,15 +28,16 @@ axios-miniprogram 是一款为小程序平台量身定制的轻量级请求库
- 支持 `Typescript`,健全的类型系统,智能的 `IDE` 提示。
- 支持 `Promise`
- 支持 拦截器。
- 支持 取消请求。
- 支持 自定义合法状态码。
- 支持 自定义参数序列化。
- 支持 自定义转换数据。
- 支持 自定义错误处理。
- 支持 自定义平台适配器。
- 支持 动态地址。
- 支持 校验状态码。
- 支持 参数序列化。
- 支持 上传/下载。
- 支持 错误处理。
- 支持 转换数据。
- 支持 取消请求。
- 支持 拦截器。
- 支持 派生领域。
- 支持 适配器。
## 目前内部支持的平台

View File

@ -18,13 +18,13 @@ export default defineConfig({
nav: [
{ text: '指南', link: '/guide/intro', activeMatch: '/guide/' },
{ text: '请求方法', link: '/method/OPTIONS', activeMatch: '/method/' },
{ text: '基础', link: '/basics/config', activeMatch: '/basics/' },
{ text: '入门', link: '/basics/request', activeMatch: '/basics/' },
{
text: '高级',
text: '进阶',
link: '/advanced/request-interceptor',
activeMatch: '/advanced/',
},
{ text: '请求方法', link: '/method/OPTIONS', activeMatch: '/method/' },
],
sidebar: sidebar(),
@ -93,6 +93,37 @@ function sidebar() {
{ text: '开始', link: '/guide/quick-start' },
],
},
{
text: '入门',
items: [
{ text: '发送请求', link: '/basics/request' },
{ text: '响应体', link: '/basics/response' },
{ text: '错误处理', link: '/basics/error-handler' },
{ text: '动态地址', link: '/basics/dynamic-url' },
{ text: '请求配置', link: '/basics/config' },
{ text: '默认配置', link: '/basics/defaults' },
{ text: '参数系列化', link: '/basics/params-serializer' },
{ text: '转换数据', link: '/basics/transform-data' },
{ text: '下载文件', link: '/basics/download' },
{ text: '上传文件', link: '/basics/upload' },
],
collapsed: false,
},
{
text: '进阶',
items: [
{ text: '请求拦截器', link: '/advanced/request-interceptor' },
{ text: '响应拦截器', link: '/advanced/response-interceptor' },
{ text: '取消请求', link: '/advanced/cancel' },
{ text: '创建实例', link: '/advanced/instance' },
{ text: '派生领域', link: '/advanced/fork' },
{ text: '平台适配器', link: '/advanced/adapter' },
],
collapsed: false,
},
{
text: '请求方法',
items: [
@ -108,34 +139,6 @@ function sidebar() {
],
collapsed: false,
},
{
text: '基础',
items: [
{ text: '请求配置', link: '/basics/config' },
{ text: '默认配置', link: '/basics/defaults' },
{ text: '响应体', link: '/basics/response' },
{ text: '发送请求', link: '/basics/request' },
{ text: '动态地址', link: '/basics/dynamic-url' },
{ text: '参数系列化', link: '/basics/params-serializer' },
{ text: '转换数据', link: '/basics/transform-data' },
{ text: '下载文件', link: '/basics/download' },
{ text: '上传文件', link: '/basics/upload' },
{ text: '错误处理', link: '/basics/error-handler' },
{ text: '取消请求', link: '/basics/cancel' },
],
collapsed: false,
},
{
text: '高级',
items: [
{ text: '请求拦截器', link: '/advanced/request-interceptor' },
{ text: '响应拦截器', link: '/advanced/response-interceptor' },
{ text: '创建实例', link: '/advanced/instance' },
{ text: '派生领域', link: '/advanced/fork' },
{ text: '平台适配器', link: '/advanced/adapter' },
],
collapsed: false,
},
{
text: '致贡献者',

View File

@ -170,6 +170,10 @@
box-shadow: none;
}
.DocSearch-Logo svg > * {
fill: currentColor;
}
.custom-block {
border-radius: 6px;
background-color: var(--vp-custom-block-tip-bg) !important;
@ -183,6 +187,10 @@
background-color: var(--vp-code-block-bg);
}
.dark .DocSearch-Logo svg > * {
fill: currentColor;
}
@media (min-width: 960px) {
.VPFeatures .item {
width: calc(100% / 2) !important;

View File

@ -39,7 +39,8 @@
--vp-custom-block-tip-text: var(--vp-c-brand);
--vp-custom-block-tip-bg: var(--vp-c-bg);
--docsearch-container-background: rgba(0, 0, 0, 0.1);
--docsearch-container-background: rgba(0, 0, 0, 0.02);
--docsearch-logo-color: var(--vp-c-brand);
--vp-sidebar-width: 340px;
}
@ -67,5 +68,9 @@
--vp-code-copy-code-border-color: rgba(240, 246, 252, 0.1);
--vp-code-copy-code-hover-border-color: #8b949e;
--docsearch-container-background: rgba(255, 255, 255, 0.1);
--docsearch-container-background: rgba(255, 255, 255, 0.08);
}
.dark .DocSearch {
--docsearch-logo-color: var(--vp-c-brand);
}

View File

@ -168,6 +168,10 @@ axios.interceptors.response.use((response) => {
默认配置和请求配置将会按优先级进行合并。
其中 `url`、`method`、`data`、`upload`、`download` 只从 `config` 取值,`headers`、`params` 会进行深度合并,其余属性则会优先从 `config` 取值。
其中:
1. `url`、`method`、`data`、`upload`、`download` 只从 `config` 取值。
2. `headers`、`params` 会分别进行深度合并。
3. 其余属性则会优先从 `config` 取值。
具体配置合并策略请参阅 [mergeConfig.ts](https://github.com/zjx0905/axios-miniprogram/blob/main/src/core/mergeConfig.ts) 。

View File

@ -5,7 +5,11 @@ title: 下载文件
# {{ $frontmatter.title }}
::: tip {{ $frontmatter.title }}
下载文件资源到本地,必须使用 `GET` 方法请求,并将配置项 `download` 设置为 `true`
下载文件资源到本地。
:::
::: warning 注意
下载文件只能使用 `GET` 方法请求,并将配置项 `download` 设置为 `true`
:::
## 普通的下载请求
@ -15,14 +19,9 @@ title: 下载文件
```ts
import axios from 'axios-miniprogram';
axios
.get(
'https://api.com/test',
{},
{
axios('https://api.com/test', {
download: true,
},
)
})
.then((response) => {
const {
// 临时文件路径 (本地路径)。没传入 filePath 指定文件存储路径时会返回,下载后的文件会存储到一个临时文件
@ -41,16 +40,12 @@ axios
```ts
import axios from 'axios-miniprogram';
axios
.get(
'https://api.com/test',
{
axios('https://api.com/test', {
download: true,
params: {
filePath: '你的本地路径',
},
{
download: true,
},
)
})
.then((response) => {
const {
// 指定文件下载后存储的路径 (本地路径)
@ -69,14 +64,11 @@ axios
```ts
import axios from 'axios-miniprogram';
axios
.get(
'https://api.com/test',
{
axios('https://api.com/test', {
download: true,
params: {
filePath: '你的本地路径',
},
{
download: true,
onDownloadProgress(event) {
const {
// 下载进度
@ -89,8 +81,7 @@ axios
totalBytesExpectedToSend,
} = event;
},
},
)
})
.then((response) => {
const {
// 指定文件下载后存储的路径 (本地路径)

View File

@ -70,6 +70,20 @@ axios
});
```
## 请求方法
提供一系列基于 `axios.request()` 的请求方法,可以使用请求方法简化请求。
- [axios.options(url, config?)](/method/OPTIONS)
- [axios.get(url, params?, config?)](/method/GET)
- [axios.head(url, params?, config?)](/method/HEAD)
- [axios.post(url, data?, config?)](/method/POST)
- [axios.put(url, data?, config?)](/method/PUT)
- [axios.patch(url, data?, config?)](/method/PATCH)
- [axios.delete(url, params?, config?)](/method/DELETE)
- [axios.trace(url, config?)](/method/TRACE)
- [axios.connect(url, config?)](/method/CONNECT)
## 说明
您可能发现 `axios.request()``axios()` 使用方式完全一致,为什么用法是一样的?

View File

@ -20,7 +20,13 @@ axios('test', {
transformRequest(data, headers) {
return JSON.stringify(data);
},
});
})
.then((response) => {
// 成功之后做些什么
})
.catch((error) => {
// 失败之后做些什么
});
```
也支持多次转换。
@ -38,7 +44,13 @@ axios('test', {
return encodeURIComponent(data);
},
],
});
})
.then((response) => {
// 成功之后做些什么
})
.catch((error) => {
// 失败之后做些什么
});
```
## 全局转换请求数据
@ -64,7 +76,13 @@ axios('test', {
transformResponse(data, headers) {
return JSON.parse(data);
},
});
})
.then((response) => {
// 成功之后做些什么
})
.catch((error) => {
// 失败之后做些什么
});
```
也支持多次转换。
@ -81,7 +99,13 @@ axios('test', {
return JSON.parse(data);
},
],
});
})
.then((response) => {
// 成功之后做些什么
})
.catch((error) => {
// 失败之后做些什么
});
```
## 全局转换响应数据

View File

@ -5,7 +5,11 @@ title: 上传文件
# {{ $frontmatter.title }}
::: tip {{ $frontmatter.title }}
将本地资源上传到服务器,必须使用 `POST` 方法请求,并将请求配置项 `upload` 设置为 `true`
将本地资源上传到服务器。
:::
::: warning 注意
上传文件只能使用 `POST` 方法请求,并将请求配置项 `upload` 设置为 `true`
:::
## 普通的上传请求
@ -15,20 +19,17 @@ title: 上传文件
```ts
import axios from 'axios-miniprogram';
axios
.post(
'https://api.com/test',
{
axios('https://api.com/test', {
method: 'POST',
upload: true,
data: {
// 文件对应的 key开发者在服务端可以通过这个 key 获取文件的二进制内容
name: 'fileName',
// 要上传文件资源的路径 (本地路径)
filePath: '你的本地路径',
},
{
upload: true,
},
)
})
.then((response) => {
const {
// 开发者服务器返回的数据
@ -47,10 +48,10 @@ axios
```ts
import axios from 'axios-miniprogram';
axios
.post(
'https://api.com/test',
{
axios('https://api.com/test', {
method: 'POST',
upload: true,
data: {
// 文件对应的 key开发者在服务端可以通过这个 key 获取文件的二进制内容
name: 'fileName',
@ -63,10 +64,7 @@ axios
// 这是额外的 formData 属性
user: '123',
},
{
upload: true,
},
)
})
.then((response) => {
const {
// 开发者服务器返回的数据
@ -85,10 +83,10 @@ axios
```ts
import axios from 'axios-miniprogram';
axios
.post(
'https://api.com/test',
{
axios('https://api.com/test', {
method: 'POST',
upload: true,
data: {
// 文件对应的 key开发者在服务端可以通过这个 key 获取文件的二进制内容
name: 'fileName',
@ -101,8 +99,6 @@ axios
// 这是额外的 formData 属性
user: '123',
},
{
upload: true,
onUploadProgress(event) {
const {
// 上传进度
@ -115,8 +111,7 @@ axios
totalBytesExpectedToSend,
} = event;
},
},
)
})
.then((response) => {
const {
// 开发者服务器返回的数据

View File

@ -28,29 +28,11 @@ $ pnpm install -D axios-miniprogram
## 引用
可以在不同的模块系统导入需要用到的功能。
:::: code-group
```ts [ES Module]
import axios from 'axios-miniprogram';
axios('test');
```
```ts [CommonJS]
const axios = require('axios-miniprogram').default;
axios('test');
```
::::
## 使用
### 引用
可以导入需要使用的功能。
```ts
import axios, {
// 取消令牌
CancelToken,
@ -67,14 +49,7 @@ import axios, {
// 创建平台适配器
createAdapter,
} from 'axios-miniprogram';
```
axios 上也有同样的功能。
```ts
import axios from 'axios-miniprogram';
// axios 同样也有这些功能
const {
// 取消令牌
CancelToken,
@ -90,21 +65,68 @@ const {
// 创建平台适配器
createAdapter,
} = axios;
```
axios 上还有一些额外的功能。
```ts
const {
// 创建实例
create,
// 获取已处理的 URL
// 获取系列化后的 URL
getUri,
} = axios;
axios('test');
```
```ts [CommonJS]
const {
// 静态对象
// 注意:默认导出的 axios 在 CommonJS 里是以 default 属性的方式存在
// import axios from 'axios-miniprogram' 等于 const axios = require('axios-miniprogram').default
default: axios,
// 取消令牌
CancelToken,
// 判断取消请求错误
isCancel,
// 原始 Axios 类
Axios,
// 判断请求响应错误
isAxiosError,
// 创建平台适配器
createAdapter,
} = require('axios-miniprogram');
const {
// 取消令牌
CancelToken,
// 判断取消请求错误
isCancel,
// 原始 Axios 类
Axios,
// 判断请求响应错误
isAxiosError,
// 创建平台适配器
createAdapter,
// 创建实例
create,
// 获取系列化后的 URL
getUri,
} = axios;
```
::::
## 使用
### `axios(url, config?)`
可以通过把 `url``config` 传递给 `axios` 来发送请求。

View File

@ -16,9 +16,8 @@
"keywords": [
"axios",
"request",
"wechat",
"miniprogram",
"uni-app"
"mini",
"miniprogram"
],
"author": "zjx0905 <954270063@qq.com>",
"bugs": {

View File

@ -1,10 +1,11 @@
import fs from 'node:fs';
import { writeFileSync } from 'node:fs';
import semver from 'semver';
import enquirer from 'enquirer';
import consola from 'consola';
import { exec, pkgPath, getPkgJSON } from './utils';
import { exec, pkgPath, getPkgJSON, resolve } from './utils';
const pkg = getPkgJSON();
const versionTSPath = resolve('src/version.ts');
const { version: currentVersion } = pkg;
main().catch((err) => exit(err.message));
@ -115,5 +116,7 @@ function exit(msg: string) {
function updateVersion(version: string) {
pkg.version = version;
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
writeFileSync(versionTSPath, `export const version = ${version};`);
}

View File

@ -9,6 +9,7 @@ import { isAxiosError } from './core/createError';
import { mergeConfig } from './core/mergeConfig';
import { createAdapter } from './adapter';
import defaults from './defaults';
import { version } from './version';
/**
* axios
@ -34,6 +35,10 @@ export interface AxiosInstance extends AxiosDomainRequest, Axios {
* axios
*/
export interface AxiosStatic extends AxiosInstance {
/**
*
*/
version: string;
/**
* Axios
*/
@ -78,6 +83,7 @@ axios.create = function create(config) {
return createInstance(mergeConfig(axios.defaults, config));
};
axios.version = version;
axios.Axios = Axios;
axios.CancelToken = CancelToken;
axios.createAdapter = createAdapter;

View File

@ -100,19 +100,19 @@ export function request(config: AxiosRequestConfig) {
function tryToggleProgressUpdate(
adapterConfig: AxiosAdapterRequestConfig,
progressUpdate?: (callback: AxiosProgressCallback) => void,
adapterProgress?: (callback: AxiosProgressCallback) => void,
) {
const { onUploadProgress, onDownloadProgress } = adapterConfig;
if (isFunction(progressUpdate)) {
if (isFunction(adapterProgress)) {
switch (adapterConfig.type) {
case 'upload':
if (isFunction(onUploadProgress)) {
progressUpdate(onUploadProgress);
adapterProgress(onUploadProgress);
}
break;
case 'download':
if (isFunction(onDownloadProgress)) {
progressUpdate(onDownloadProgress);
adapterProgress(onDownloadProgress);
}
break;
}

View File

@ -38,5 +38,6 @@ export { CancelToken, isCancel } from './core/cancel';
export { default as Axios } from './core/Axios';
export { isAxiosError } from './core/createError';
export { createAdapter } from './adapter';
export { version } from './version';
export default axios;

1
src/version.ts Normal file
View File

@ -0,0 +1 @@
export const version = '2.3.0';