掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流
定義上傳文件接口時(shí),都會(huì)選擇使用 multipart/form-data 方式,即要求表單的enctype屬性為multipart/form-data,文件以file類(lèi)型提交,參數(shù)以key-value方式提交。最近在寫(xiě)個(gè)小工具,功能是把本地的swagger格式的接口文檔一鍵上傳到接口管理平臺(tái)yapi和metersphere上,在看兩個(gè)平臺(tái)的導(dǎo)入接口文檔openapi后發(fā)現(xiàn)都不是很規(guī)范。

玉州ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話(huà)聯(lián)系或者加微信:18982081108(備注:SSL證書(shū)合作)期待與您的合作!
先看下ypai導(dǎo)入接口文檔接口的設(shè)計(jì),yapi要求使用application/x-www-form-urlencoded 方式導(dǎo)入文件(將文件內(nèi)容作為一個(gè)key的value,本質(zhì)上不是上傳文件,文件比較大的時(shí)候這種方式性能很低)
再看下metersphere導(dǎo)入接口文檔接口的設(shè)計(jì),因?yàn)楣俜轿臋n寫(xiě)的不夠詳細(xì),文檔中沒(méi)有體現(xiàn)傳參方式,所以通過(guò)抓包看。抓包后參數(shù)部分如下:
------WebKitFormBoundary2iHGla7AYYuM2hRW
Content-Disposition: form-data; name="file"; filename="swagger.json"
Content-Type: application/json
------WebKitFormBoundary2iHGla7AYYuM2hRW
Content-Disposition: form-data; name="request"; filename="blob"
Content-Type: application/json
{"file":{"uid":1678539466009},"modeId":"incrementalMerge","moduleId":"64a43afa-a846-431b-9b5a-72c0d40081ab","coverModule":false,"modulePath":"/未規(guī)劃接口","platform":"Swagger2","saved":true,"model":"definition","projectId":"6783a271-f88f-569d-b6a5-43ef180bd17a","protocol":"HTTP"}
------WebKitFormBoundary2iHGla7AYYuM2hRW--
可以看出是使用了multipart/form-data方式,需要導(dǎo)入的文件也是以file類(lèi)型提交的,但是參數(shù)部分竟然也要求使用file類(lèi)型提交。
enctype規(guī)定了form表單發(fā)送到服務(wù)器的編碼方式,有如下的三個(gè)值:
如果接口沒(méi)有上傳文件的需求,使用application/x-www-form-urlencoded 即可。
如果接口有上傳文件的需求,使用 multipart/form-data,文件以file類(lèi)型提交,參數(shù)以key-value方式提交。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流