From 1c60386251ed7e67b0ce0e6860c2a8d3fc2b0d7a Mon Sep 17 00:00:00 2001 From: liaoxuezhi Date: Fri, 25 Oct 2019 16:05:29 +0800 Subject: [PATCH] =?UTF-8?q?api=20=E5=8F=91=E9=80=81=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E5=9C=A8=E5=8E=9F=E6=9D=A5=E7=9A=84=20json=20form-data=20?= =?UTF-8?q?=E4=B9=8B=E5=A4=96=E6=94=AF=E6=8C=81=E9=85=8D=20dataType=20?= =?UTF-8?q?=E4=B8=BA=20form?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/renderers/Types.md | 2 +- src/types.ts | 4 ++-- src/utils/api.ts | 4 ++++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/renderers/Types.md b/docs/renderers/Types.md index cebf2a090..d7325ed45 100644 --- a/docs/renderers/Types.md +++ b/docs/renderers/Types.md @@ -60,7 +60,7 @@ Api 类型可以是字符串或者对象。API 中可以直接设置数据发送 - `url` api 地址 - `method` 可以是:`get`、`post`、`put`或者`delete` - `data` 数据体, 数据对象。 - - `dataType` 数据体格式,默认为 `json` 可以配置成 `form`。当 data 中包含文件时,自动会采用 `form`(multipart/form-data) 格式。 + - `dataType` 数据体格式,默认为 `json` 可以配置成 `form` 或者 `form-data`。当 data 中包含文件时,自动会采用 `form-data`(multipart/form-data) 格式。当配置为 `form` 时为 `application/x-www-form-urlencoded` 格式。 - `headers` 头部,配置方式和 data 配置一样,下面不详讲。如果要使用,请前往群组系统配置中,添加允许。 - `sendOn` 可以配置发送条件比如: `this.id` 表示当存在 id 值时才发送这个请求。 - `cache` 通过配置此属性开启缓存,单位是 ms,比如设置 3000 的话,当前接口在3s内请求,只要传参一致就会走缓存。 diff --git a/src/types.ts b/src/types.ts index 086ecf843..3f53dac3a 100644 --- a/src/types.ts +++ b/src/types.ts @@ -2,7 +2,7 @@ export interface ApiObject { url: string; method: 'get' | 'post' | 'put' | 'patch' | 'delete'; data?: object; - headers?: object; + headers?: PlainObject; config?: { withCredentials?: boolean; cancelExecutor?: (cancel: Function) => void; @@ -13,7 +13,7 @@ export interface ApiObject { requestAdaptor?: (api: ApiObject) => ApiObject; cache?: number; qsOptions?: any; - dataType?: 'json' | 'form-data'; + dataType?: 'json' | 'form-data' | 'form'; } export type ApiString = string; export type Api = ApiString | ApiObject; diff --git a/src/utils/api.ts b/src/utils/api.ts index 86828448b..7857a76e8 100644 --- a/src/utils/api.ts +++ b/src/utils/api.ts @@ -145,6 +145,10 @@ export function wrapFetcher( if (api.data && (hasFile(api.data) || api.dataType === 'form-data')) { api.data = object2formData(api.data, api.qsOptions); + } else if (api.data && api.dataType === 'form') { + api.data = qsstringify(api.data) as any; + api.headers = api.headers || (api.headers = {}); + api.headers['Content-Type'] = 'application/x-www-form-urlencoded'; } api.requestAdaptor && (api = api.requestAdaptor(api) || api);