API走代理回傳415,即使業務欄位看來正確,也要先核對實際傳送表示,再換出口。JSON、網址編碼表單與multipart能承載相似值,但序列化及中繼資料不同。

本文提出自有或明確授權端點的小型驗收,未宣稱實測相容性;代理傳送本文不會自動讓目標接受不支援格式。

接受案例的請求標籤與內部本文形狀一致,另一份標籤及本文不匹配的請求停下待查

一、寫明端點契約

MDN說明415 Unsupported Media Type是拒絕不支援的請求格式,可涉及Content-Type、Content-Encoding或內容檢查。單一狀態不能指出拒絕欄位或元件。

列出精確網址、方法、API版本、可接受媒體類型及參數、請求內容編碼與最小有效合成物件,依目標文件及負責人確認。若有Accept-Post等提示可參考,沒有提示不等於能猜格式。

Content-Type描述本請求本文表示,Content-Encoding宣告已套用的內容編碼,Accept表達回應偏好。改Accept不會替請求轉換序列化格式。

二、觀察真實請求邊界

  1. 選不觸發付款、郵件及客戶資料動作的測試接收端。
  2. 記生效目標網址和方法,於用戶端與授權接收端取得遮蔽中繼資料。
  3. 查本文實際位元組或安全合成樣本,不只看序列化前記憶體物件。
  4. 對照媒體類型、參數、內容編碼與接收端解析器。
  5. 存案例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邊界控制。
  • 區分請求編碼和回應偏好。
  • 查接收欄位與最終副作用。
  • 只留授權合成樣本,嘗試有界,不承諾未測相容性。