Тип тела ответа HTTP в RAML для API
Я создаю API с центром Mule Anypoint Design, где я получаю данные с типом text/plain от других конечных точек. Могу ли я просто использовать текст / обычный код ниже raml вместо application/json?
Почему я спрашиваю это?
Моей конечной точкой является AWS SNS, и он отправляет HTTP-заголовок Content-Type только со значением "text/plain", а маршрутизатор apikit в студии проверяет, является ли тип содержимого "любым, что указано в спецификации RAML (application/json)"., Конечно, я могу отключить проверки, но у меня есть другие вещи для проверки, которые зависят от этого.
responses:
201:
body:
application/json:
example: {"msg" : "Flight inserted successfully"}
2 ответа
С марта 2023 года Amazon SNS теперь поддерживает пользовательскиеContent-Type
заголовки HTTP-сообщений, доставленных из тем. Вот объявление: https://aws.amazon.com/about-aws/whats-new/2023/03/amazon-sns-content-type-request-headers-http-s-notifications/
Вам просто нужно изменить атрибут вашей подписки Amazon SNS, установивheaderContentType
собственностьapplication/json
,application/xml
или любое другое поддерживаемое значение. Все поддерживаемые значения можно найти здесь: https://docs.aws.amazon.com/sns/latest/dg/sns-message-delivery-retries.html#creating-delivery-policy .
{
"healthyRetryPolicy": {
"minDelayTarget": 1,
"maxDelayTarget": 60,
"numRetries": 50,
"numNoDelayRetries": 3,
"numMinDelayRetries": 2,
"numMaxDelayRetries": 35,
"backoffFunction": "exponential"
},
"throttlePolicy": {
"maxReceivesPerSecond": 10
},
"requestPolicy": {
"headerContentType": "application/json"
}
}
Вы устанавливаетеDeliveryPolicy
атрибут, вызвав либо методSubscribe
илиSetSubscriptionAttributes
Действие API:
Да, вы можете изменить его на text/plain в RAML, если это необходимо. Но если вы хотите, чтобы ваш ответ был json, вам лучше изменить свою полезную нагрузку и перезаписать заголовок Content-type в центре разработки Mule/Anypoint.