Я определяю свой контракт API в RAML в центре дизайна платформы Mule Anypoint. Вот простой договор:
#%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: все это поведение наблюдается в Центре дизайна, я не предоставляю реализацию, а затем тестирую ее, я использую документацию Центра дизайна и функцию «Попробуйте», как показано на изображении ниже:
Потому что это макет, а не реальная реализация. Когда вы тестируете в Design Center, вы используете Mocking Service , которая имитирует ответы. Ошибка, которую вы получаете, связана с тем, что запрос не соответствует спецификации. Mocking Service обычно использует только первый код состояния, который он находит в API RAML. Если вы хотите, чтобы он возвращал вашу ошибку, используйте поведенческий заголовок, например MS2-Status-Code, чтобы установить код ошибки. Например, установите для заголовка MS2-Status-Code значение 200,400
. Хотя я не уверен, что это сработает, чтобы переопределить ошибку проверки от Mocking Service. Вам нужно будет попробовать.
отлично спасибо! , удалось переопределить ошибку проверки от сервиса Mocking, спасибо за подробности!
Официальное название Центр дизайна.