估价器请求怎么过滤掉非接口定义的字段
生成携带请求方法的文件(或者纯类型的文件
ts
import { Method, RequestBodyType, ResponseBodyType, RequestConfig, RequestFunctionRestArgs, prepare } from '@zz-common/zapi-to-typescript'
import request from './request'
// makeRequest
function makeRequestRequired<TReqeustData, TResponseData, TRequestConfig extends RequestConfig>(
requestConfig: TRequestConfig,
) {
const req = function (requestData: TReqeustData, ...args: RequestFunctionRestArgs<typeof request>) {
return request<TResponseData>(prepare(requestConfig, requestData), ...args)
}
req.requestConfig = requestConfig
return req
}
function makeRequestOptional<TReqeustData, TResponseData, TRequestConfig extends RequestConfig>(
requestConfig: TRequestConfig,
) {
const req = function (requestData?: TReqeustData, ...args: RequestFunctionRestArgs<typeof request>) {
return request<TResponseData>(prepare(requestConfig, requestData), ...args)
}
req.requestConfig = requestConfig
return req
}
function makeRequest<TReqeustData, TResponseData, TRequestConfig extends RequestConfig>(requestConfig: TRequestConfig) {
const optional = makeRequestOptional<TReqeustData, TResponseData, TRequestConfig>(requestConfig)
const required = makeRequestRequired<TReqeustData, TResponseData, TRequestConfig>(requestConfig)
return (requestConfig.requestDataOptional ? optional : required) as TRequestConfig['requestDataOptional'] extends true
? typeof optional
: typeof required
}
// Request
export type Request<
TReqeustData,
TRequestConfig extends RequestConfig,
TRequestResult,
> = (TRequestConfig['requestDataOptional'] extends true
? (requestData?: TReqeustData, ...args: RequestFunctionRestArgs<typeof request>) => TRequestResult
: (requestData: TReqeustData, ...args: RequestFunctionRestArgs<typeof request>) => TRequestResult) & {
requestConfig: TRequestConfig
}
const mockUrl_0_0_0_4 = 'https://zapi.zhuanspirit.com/mock/7895' as any
const devUrl_0_0_0_4 = '' as any
const prodUrl_0_0_0_4 = '' as any
const dataKey_0_0_0_4 = 'data' as any
/**
* 接口 [实时询价↗](https://zapi.zhuanspirit.com/project/7895/interface/api/3970184) 的 **请求配置的类型**
*/
type EvalPriceRequestConfig = Readonly<
RequestConfig<
'https://zapi.zhuanspirit.com/mock/7895',
'',
'',
'/platform/retailPrice4/evalPrice',
'data',
string,
'sceneId' | 'qcCode' | 'version',
false
>
>
/**
* 接口 [实时询价↗](https://zapi.zhuanspirit.com/project/7895/interface/api/3970184) 的 **请求配置**
*/
const evalPriceRequestConfig: EvalPriceRequestConfig = {
mockUrl: mockUrl_0_0_0_4,
devUrl: devUrl_0_0_0_4,
prodUrl: prodUrl_0_0_0_4,
path: '/platform/retailPrice4/evalPrice',
method: Method.GET,
requestHeaders: {},
requestBodyType: RequestBodyType.query,
responseBodyType: ResponseBodyType.json,
dataKey: dataKey_0_0_0_4,
paramNames: [],
queryNames: ['sceneId', 'qcCode', 'version'],
requestDataOptional: false,
requestDataJsonSchema: {},
responseDataJsonSchema: {},
requestFunctionName: 'evalPrice',
noStrictParams: false,
}
/**
* 接口 [实时询价↗](https://zapi.zhuanspirit.com/project/7895/interface/api/3970184) 的 **请求函数**
*/
export const evalPrice = makeRequest<EvalPriceRequest, EvalPriceResponse, EvalPriceRequestConfig>(
evalPriceRequestConfig,
)
👆 大部分是请求方法的处理
👇 入参出参的类型其实非常少
ts
/**
* 接口 [实时询价↗](https://zapi.zhuanspirit.com/project/7895/interface/api/3970184) 的 **请求类型**
*/
export interface EvalPriceRequest {
sceneId: string
qcCode: string
version: string
}
/**
* 接口 [实时询价↗](https://zapi.zhuanspirit.com/project/7895/interface/api/3970184) 的 **返回类型**
*/
export type EvalPriceResponse = {
/**
* 质检码
*/
qcCode: string
}[]