我在 Mule Anypoint 平臺設計中心的 RAML 中定義我的 api 合同。這是簡單的合同:
#%RAML 1.0
title: test_experiment
version: v1
mediaType: application/json
/test:
put:
headers:
trackingId:
type: string
description: "Track each request"
minLength: 3
responses:
200:
body:
application/json:
example:
{
"msg": "successfully done"
}
400:
body:
application/json:
example:
{
"msg": "something bad was submitted",
"id" : "001"
}
接下來,我嘗試在“檔案”選項卡中“測驗它”,當我故意不輸入 a 時,trackingId我確實得到了 400 回應代碼,但回應負載不同。
我已將回應負載定義為:(預期負載)
{
"msg": "something bad was submitted",
"id" : "001"
}
然而,設計中心“試試看”中的有效負載回應是:
{
"code": "REQUEST_VALIDATION_ERROR",
"message": "Error validating header: expected minLength: 3, actual: 0"
}
那么為什么 400 回應沒有像我在 raml 中定義的那樣回傳?

Edit1:此行為全部在設計中心觀察到,我沒有提供實作然后對其進行測驗,我正在使用設計中心檔案和“嘗試”功能,如下圖所示:

uj5u.com熱心網友回復:
因為它是一個模擬,而不是一個真正的實作。當您在設計中心進行測驗時,您使用的是模擬回應的模擬服務。您收到的錯誤是因為請求與規范不匹配。模擬服務通常只使用它在 API RAML 中找到的第一個狀態代碼。如果您希望它回傳您的錯誤,請使用行為標頭(如 MS2-Status-Code)來設定錯誤代碼。例如,將標頭 MS2-Status-Code 設定為200,400. 雖然我不確定它是否可以覆寫模擬服務的驗證錯誤。您將需要嘗試。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/536364.html
