這個問題實際上是對較早的問題here的后續
我要做的是強制我的 api 的使用者僅將Content-Type作為application/json發送
我的環境是:Mule 4.4 運行時(在 prem 中,不使用 Anypoint 平臺)
我在 OAS 3.0 中定義規范并使用 swagger 編輯器來創建和編輯規范
我有以下定義:
/user:
post:
parameters:
- in: header
name: Content-Type
required: true
schema:
type: string
enum:
- application/json
我可以看到一個警告:
名為“Content-type”的標頭引數將被忽略。“Content-Type”標頭的值由“RequestBody.content.media-type”定義
嘗試谷歌搜索并在這里找到一個鏈接但它只是說明:
確保不要將受限值用作標頭引數名稱。
這真的沒有解釋如何執行這個標準?
作為旁注 - 如果我在設計中心(Anypoint 平臺)中復制粘貼相同的 api 規范,它不會抱怨并且事實上 mule 運行時正確驗證并拒絕內容型別中沒有 application/json 的請求
謝謝
uj5u.com熱心網友回復:
在 OpenAPI(甚至 RAML)中,我們不會將 Content-Type 標頭視為通用 HTTP 標頭。這適用于請求和回應。作為規范的一部分,您可以為每個請求定義媒體型別。該實作將負責正確處理它并驗證在執行時使用了正確的 Content-Type 標頭。由于您嘗試手動設定它,因此實作會給您一個預期的警告。
例子:
paths:
/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX:
post:
requestBody:
content:
application/json:
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/464118.html
