UNPKG

swagger-json-schema-request

Version:

通过Yapi JSON Schema生成接口Axios或Taro接口

87 lines (85 loc) 3.22 kB
import { SwaggerParamsPathsMethods, CreateApiStateType, RequestGetRenderTs, RequestGetPropertiesObject } from './../define'; import { // filterPathParams, formatTsRequest, formatTsResponse, formatProperties, formatRequireds, deepCopy, createTypeDefineObj, // pascalCase, // log, deepFormatResponse, } from './../utils'; import BaseRequest from './base'; class RequestGet extends BaseRequest { constructor(method: string, url: string, schema: SwaggerParamsPathsMethods, fetchType: CreateApiStateType, host: string) { super(method, url, schema, fetchType, host) } renderTsDefineReq(): RequestGetRenderTs { const { parameters = [] } = this.state.schema; const reqParams = parameters.filter((params) => params.in === 'query'); return { title: formatTsRequest(this.state.methodName), properties: formatProperties(reqParams), required: formatRequireds(reqParams), additionalProperties: false, } } renderTsDefineReqFeature() { const { parameters = [] } = this.state.schema; const reqParams = parameters.filter((params) => params.in === 'query'); const title = formatTsRequest(this.state.methodName); const properties = formatProperties(reqParams) const required = formatRequireds(reqParams); const reqList = []; const req = createTypeDefineObj(title, properties, 'object', required) reqList.push(req); return reqList; } renderTsDefineResFeature() { try{ const schema = deepCopy(this.state.schema.responses['200'].schema) as RequestGetPropertiesObject; const properties = []; const title = formatTsResponse(this.state.methodName); if (['object'].includes(schema.type)) { properties.push(createTypeDefineObj(title, schema.properties, schema.type, schema.required)); deepFormatResponse(schema, properties, { title: title, properties: schema.properties, type: schema.type }); } if (['array'].includes(schema.type)) { const schemaArray = (schema as any).items; properties.push(createTypeDefineObj(title, schemaArray.properties, schemaArray.type, schemaArray.required)); deepFormatResponse(schemaArray, properties, { title: title, properties: schemaArray.properties, type: schemaArray.type }); } return properties; }catch(err) { console.log(`解析错误:${this.state.url} response schema`) return [] } } renderFetchRequest() { const { schema, host, url, method } = this.state; const { summary } = schema; if (this.state.fetchType === 'axios') { return ` // ${summary} return axios.request({ url: \`${host}${url}\`, method: '${method}', params: params, ...options, }) ` } return ` // ${summary} return Taro.request({ url: \`${host}${url}\`, method: '${method}', data: params, ...options, }) ` } } export default RequestGet;