API走代理回傳415,即使業務欄位看來正確,也要先核對實際傳送表示,再換出口。JSON、網址編碼表單與multipart能承載相似值,但序列化及中繼資料不同。
本文提出自有或明確授權端點的小型驗收,未宣稱實測相容性;代理傳送本文不會自動讓目標接受不支援格式。
一、寫明端點契約
MDN說明415 Unsupported Media Type是拒絕不支援的請求格式,可涉及Content-Type、Content-Encoding或內容檢查。單一狀態不能指出拒絕欄位或元件。
列出精確網址、方法、API版本、可接受媒體類型及參數、請求內容編碼與最小有效合成物件,依目標文件及負責人確認。若有Accept-Post等提示可參考,沒有提示不等於能猜格式。
Content-Type描述本請求本文表示,Content-Encoding宣告已套用的內容編碼,Accept表達回應偏好。改Accept不會替請求轉換序列化格式。
二、觀察真實請求邊界
- 選不觸發付款、郵件及客戶資料動作的測試接收端。
- 記生效目標網址和方法,於用戶端與授權接收端取得遮蔽中繼資料。
- 查本文實際位元組或安全合成樣本,不只看序列化前記憶體物件。
- 對照媒體類型、參數、內容編碼與接收端解析器。
- 存案例ID、用戶端版本、本文長度及合成摘要,排除憑據與個資。
共用用戶端預設標頭可能在呼叫程式換本文格式後仍保留,需查攔截器及包裝層最終合併結果。若重新導向,應查實際接收跳的方法與本文,不假設原樣保留。
三、先完成有效對照
有文件的JSON端點,以用戶端支援序列化器生成無害樣本及規定類型,確認接收端解析預期欄位並取得契約成功。2xx卻忽略本文或得到空物件,不算對照通過。
接著在測試環境只改同一小本文的宣告類型,按契約寫預期拒絕。不能要求所有錯誤輸入都415,語法或欄位驗證失敗可能有其他文件化回應。
負例後恢復有效對照;它也失敗時先查狀態、路由及配置,勿直接歸因媒體類型。
四、瀏覽器FormData自行產生邊界
端點明確支援multipart時,用正確欄位名建立小型FormData。MDN建議透過Fetch或XMLHttpRequest傳送時,讓瀏覽器設定Content-Type,使boundary與產生本文一致。
此請求應移除衝突的全域JSON或手寫multipart標頭,勿將舊追蹤boundary套給新本文。非瀏覽器用戶端依其文件使用multipart建構器,將產生標頭與本文視為一組。
頂層multipart類型不同於檔案部分的類型與檔名。改副檔名或標籤不會轉換實際位元組;樣本仍需符合目標檔案政策。
五、內容編碼整組驗收
只有目標明確支援請求壓縮時,才測實際編碼樣本與匹配宣告。普通JSON標成壓縮不算;保留壓縮位元組卻移除編碼標頭也不匹配。
契約允許才先跑未壓縮對照,再一起改編碼與宣告,核對接收端解碼後合成欄位。記本文大小、解析限額及預期驗證結果,避免把別種拒絕誤列415。
六、比較路徑並修正表示
核准基準及代理各用獨立重設案例,固定用戶端版本、目標、格式與樣本,比較接收證據。HTTPS通道內不能先假設轉送代理能檢查加密目標本文,應先辨識自有TLS終止及解析層。
98IP動態住宅IP產品頁協助了解授權地區API測試產品,以API設定頁確認接入與帳戶選項。產品不定義目的端接受的表示,也不證明特定序列化器相容。
- 文件有效表示:解析預期值。
- 同本文衝突類型:符合契約拒絕。
- 瀏覽器FormData:boundary與本文一致。
- 檔案部分:內容、類型及檔名符合政策。
- 支援的編碼:解碼位元組與宣告一致。
- 恢復對照:修正有效且不改無關路徑。
案例尚未執行。序列化器與中繼資料一起修正,以新合成案例驗證一次;勿換出口或反覆重送不變的不支援格式。寫入結果未知時,先依目標回執或讀回政策確認。
常見問題與完成清單
只改標頭能修415嗎?僅當既有位元組已符合文件表示,否則也需正確生成本文。
相同物件就是相同請求嗎?不同序列化器能將相似應用值變成不同表示。
- 已記契約與有效對照。
- 查真實本文與最終合併標頭。
- 保留FormData邊界控制。
- 區分請求編碼和回應偏好。
- 查接收欄位與最終副作用。
- 只留授權合成樣本,嘗試有界,不承諾未測相容性。