褰撲綘鍦ㄥ啓椤圭洰鐨勬椂鍊欙紝鍦ㄥ啓椤圭洰鍜岃繛鎺ュ悗鍙扮殑鏃跺€欙紝浼氬彂鐜板啓瀵瑰簲鐨凙PI鍑芥暟寰堥夯鐑︺€傛垜鏄繖涔堣涓虹殑锛屽鏋滀娇鐢═ypescript锛岃淇濊瘉鍜屽悗绔殑绫诲瀷涓€鑷达紝杩樿鎵嬪啓绫诲瀷锛屾帴鍙h姹傚拰杩斿洖鍙傛暟瀹氫箟绫诲瀷灏辨垚浜嗕竴浠剁疮璧樼殑浜嬫儏銆傚鏋滃悗绔湁鎻愪緵鎺ュ彛鎻忚堪绛夌殑鏁版嵁婧愶紙swagger銆亂api鎴栧叾浠栨潵婧愶級锛屾垜浠彲浠ヤ娇鐢╝ippgen鑷姩鐢熸垚鎺ュ彛鍜岀被鍨嬨€?***@summary涓婁紶鍥剧墖*@methodpost*/exportfunctionpostPetPetIdUploadImage(data:FormData,paths:OpenAPITypes.PostPetPetIdUploadImagePath,config?:AxiosRequestConfig){consturl=`/pet/${paths?.petId}/uploadImage`http.request>({url,data,...config})}/***@summary娣诲姞涓€涓柊瀹犵墿鍒板晢搴?@methodpost*/exportfunctionpostPet(data:OpenAPITypes.Pet,config?:AxiosRequestConfig){consturl='/pet'http.request>({url,data,...config})}exporttypeResponse=T;export鎺ュ彛ApiResponse{浠g爜锛燂細鏁板瓧锛涚被鍨嬶紵锛氬瓧绗︿覆锛沵essage?:string;}exportinterfaceCategory{id?:number;name?:string;}exportinterfacePet{id?:number;绫诲埆锛燂細绫诲埆锛涘悕绉帮細瀛楃涓诧紱photoUrls:瀛楃涓瞇];鏍囩锛燂細鏍囩[]锛?**@descriptionpetstatusinthestore*/status?:string;}aippgen锛圓PIPipelineGenerator锛夋槸API鐢熸垚宸ュ叿锛屽叾涓璓ipeline鏄閬撶殑鎰忔€濓紝apigen閫氳繃涓嶅悓鐨勭閬撴敮鎸佷笉鍚岀殑婧愬拰杈撳嚭鏍煎紡銆傜洰鍓嶏紝apigen瀹樻柟榛樿鏀寔swag-ts-axios鍜宻wag-js-axios涓ょ娴佹按绾匡紝骞舵敮鎸佽嚜瀹氫箟娴佹按绾裤€備笉鍚岀殑绠¢亾鍙互閲嶅浣跨敤鍜岄噸缁勫湪浣跨敤涔嬪墠锛屾垜浠厛鍦ㄦ湰鍦伴」鐩枃浠跺す涓嬪畨瑁咃細pnpmaddapigen-D#鎴栬€匶arnyarnaddapigen--dev馃摉瑕佷娇鐢╝pigen锛岄鍏堣鍐欎竴涓厤缃枃浠讹紝鐢遍厤缃枃浠跺喅瀹氳緭鍏?杈撳嚭鍐呭,鏀寔澶氫釜Configuration鏂囦欢锛屾牸寮忎负.ts|.js|.cjs|.jsonimport{defineConfig}from'apigen'exportdefaultdefineConfig({/***浣跨敤鐨勭紪璇戝鐞嗙閬擄紝鏀寔npm鍖咃紙鍓嶇紑涓篴pigen-锛夋垨鏈湴璺緞**榛樿鏀寔swag-ts-axios|swag-js-axios*@default'swag-ts-axios'*/pipeline:'swag-ts-axios',//杈撳叆婧愶紙swaggerurl鎴杝waggerjson锛塧ndoutputsource//濡傛灉浣犳湁澶氫釜鏉ユ簮锛屼綘鍙互浣跨敤鏈嶅姟鍣ㄥ瓧娈礽nput:'https://petstore.swagger.io/v2/swagger.json',output:{main:'src/api/index.ts',type:'src/api/index.type.ts',},//APIbaseUrl锛岃繖涓厤缃細浼犵粰axiosbaseURL:'import.meta.env.VITE_APP_BASE_API',//鑷畾涔塺esponseType锛岄粯璁responseType:'T鎵╁睍nds{鏁版嵁锛燂細鎺ㄦ柇V}锛烿:void',})閰嶇疆瀹屾垚鍚庝娇鐢╝pigen鑴氭湰鐢熸垚浠g爜锛?runapigenpnpmapigen鎻愪緵婧愶紙杈撳叆锛夎緭鍏ョ洰鍓嶆敮鎸佷袱绉嶈緭鍏ユ簮url|jsonexportdefaultdefineConfig({//鐩存帴杈撳叆鏈嶅姟urlinput:'http://...api-docs',//orselectothersourceinput:{/*url|json*/}})Multi-service(Server)濡傛灉鏈夊涓湇鍔★紝鍙互浣跨敤server璁剧疆澶氫釜鏈嶅姟.鍏朵粬椤跺眰閰嶇疆灏嗕綔涓洪檮鍔犻厤缃甧xportdefaultdefineConfig({baseUrl:'https://...',//鎵€鏈夋湇鍔″櫒缁ф壙涓婂眰閰嶇疆server:[{uri:'...',瀵煎叆锛?...'锛岃緭鍑猴細{/*...*/}}锛寋uri锛?...'锛屽鍏ワ細'...'锛岃緭鍑猴細{/*...*/}},{uri:'...',import:'...',output:{/*...*/}},]})瀵煎叆锛圛mport锛夊綋鐒舵垜浠彲鑳芥兂鍦╝xios涓嚜瀹氫箟鎷︽埅鍣ㄦ垜浠殑椤圭洰锛屾垨鑰呬娇鐢╝xios.create鐨勬柊瀹炰緥銆傝繖鏃跺€欏彲浠ヤ娇鐢ㄥ鍏ュ瓧娈佃嚜瀹氫箟瀵煎叆璇锋眰鐨勮矾寰勩€備笉瑕佷粙鎰忚繃搴﹀皝瑁卆xios锛岄偅鏍蜂細鐮村潖axios鍘熸湁鐨勫姛鑳姐€傛垜浠厛鍦ㄥ悓绾х洰褰曚笅瀹氫箟涓€涓猦ttp.instance.ts鏉ラ厤缃產xios璇锋眰//浣跨敤axios.create鍒涘缓涓€涓柊鐨勫疄渚媍onstrequest=axios.create({baseURL:'https://...'})//浣跨敤鎷︽埅鍣╮equest.interceptors.request.use(/*...*/)request.interceptors.response.use(/*...*/)鐒跺悗鎴戜滑閰嶇疆apigen.config鏂囦欢骞舵坊鍔犲鍏ュ瓧娈点€傚鍑洪粯璁efineConfig({pipeline:'swag-ts-axios',杈撳叆:{uri:'https://petstore.swagger.io/v2/swagger.json'},杈撳嚭:{main:'src/apis/index.ts'},import:{//灏嗗疄闄呯殑http璇锋眰瀵煎叆璺緞鏀逛负'./http.instance'http:'./http.instance'}})鐒跺悗杩愯apigen锛屾垜浠彲浠ュ緱鍒版嫤鎴櫒axios瀹炰緥锛歩mporthttpfrom"./http.instance";import{AxiosRequestConfig}from"axios";import*asOpenAPITypesfrom"./index.type";import{Response}from"./index.type";/***@summary涓婁紶鍥剧墖*@methodpost*/exportfunctionpostPetPetIdUploadImage(data:FormData,paths:OpenAPITypes.PostPetPetIdUploadImagePath,config?:AxiosRequestConfig){consturl=`/pet/${paths?.petId}/uploadImage`;http.request>({url,data,...config});}SwaggertoJavascriptAxios濡傛灉浣犵殑椤圭洰鏄疛avascript锛屼娇鐢╝pigen鐨剆wag-js-axiospipeline涔熷彲浠ョ敤TS鐢熸垚JS鏂囦欢绫诲瀷鎻愮ずexportdefaultdefineConfig({pipeline:'swag-js-axios',杈撳叆:{uri:'https://petstore.swagger.io/v2/swagger.json',},})exportdefaultdefineConfig({绠¢亾:'swag-js-axios',杈撳叆:{uri:'https://petstore.swagger.io/v2/swagger.json',},})/***@summary涓婁紶鍥剧墖*@methodpost*@param{FormData}data*@param{import("./index.type").PostPetPetIdUploadImagePath}璺緞*@param{import("axios").AxiosRequestConfig=}閰嶇疆*@return{import("./index.type").Response}*/exportfunctionpostPetPetIdUploadImage(data,paths,config){consturl=`/pet/${paths?.petId}/uploadImage`http.request({url,data,...config})}绠¢亾(Pipeline)apigen鐢变竴涓壒娈婄殑澶勭悊绠¢亾鎿嶄綔锛屼粠杈撳叆鐨刢onfig鍒版渶缁堢殑dest杈撳嚭鏂囦欢浣滀负涓€涓畬鏁寸殑绠¢亾apigen鍦ㄥ畾涔夐厤缃椂浼犲叆pipeline鍙傛暟鏀寔npm鍖?鍓嶇紑apigen-)鍜屾湰鍦拌矾寰勩€傛垜浠彲浠ユ牴鎹嚜宸变笉鍚岀殑闇€姹傚畾鍒朵笉鍚岀殑澶勭悊绠¢亾锛堟潵婧愶紝璋冪敤http璇锋眰搴擄級锛歟xportdefaultdefineConfig({pipeline:'./custom-pipe',})鍜宲ipeline涓璦pigen鎻愪緵鐨刾ipeline鍑芥暟瀹氫箟銆?/custom-pipe.ts//浣跨敤apigen鎻愪緵鐨刾ipeline鍒涘缓涓€涓狝PIpipelinegeneratorimport{pipeline}from'apigen'//姣忎釜pipeline鏆撮湶涓€涓搴旂殑鏂规硶锛屽彲浠ラ噸鐢ㄥ拰閲嶇粍import{dest,generate,original}from'apigen-swag-ts-axios'functionmyCustomPipe(config){constprocess=pipeline(//璇诲彇閰嶇疆锛岃浆鎹负鍐呴儴閰嶇疆锛屽苟鎻愪緵榛樿鍊糲onfig=>readConfig(config),//鑾峰彇鏁版嵁婧恈onfigRead=>original(configRead),//灏嗘暟鎹簮瑙f瀽涓哄浘(graphs)configRead=>parser(configRead),//缂栬瘧鏁版嵁骞跺皢鍏惰浆鎹负鎶借薄璇硶鏍?AST)configRead=>compiler(configRead),//鐢熸垚浠g爜(code)configRead=>generate(configRead),//浣跨敤杈撳嚭鏉ヨ緭鍑烘枃浠禼onfigRead=>dest(configRead),)returnprocess(config)}functionreadConfig(config){//...}functionparser(configRead){//...}functioncompiler(configRead){//...}濡傛灉鎮ㄦ湁鍏磋叮锛屾垜浠細鑰冭檻涓€涓壒瀹氱殑鍏充簬濡備綍鑷畾涔塧ippgen绠¢亾鐨刬c鏂囩珷銆傛瘺姣涚殑鍗氬Github/鎺ㄧ尗