[英]Mule design centre defining 400 response but trying it does not return same response
我正在 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"
}
接下來,我嘗試在“文檔”選項卡中“測試它”,當我故意不輸入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:此行為全部在設計中心觀察到,我沒有提供實現然后對其進行測試,我正在使用設計中心文檔和“嘗試”功能,如下圖所示:
因為它是一個模擬,而不是一個真正的實現。 當您在設計中心進行測試時,您使用的是模擬響應的Mocking 服務。 您收到的錯誤是因為請求與規范不匹配。 Mocking 服務通常只使用它在 API RAML 中找到的第一個狀態代碼。 如果您希望它返回您的錯誤,請使用行為 header(如 MS2-Status-Code )來設置錯誤代碼。 例如,將 header MS2-Status-Code 設置為200,400
。 雖然我不確定它是否可以覆蓋來自 Mocking 服務的驗證錯誤。 您將需要嘗試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.