Самый простой способ обойти нарушения спецификации ответов API в C # REST-Client - PullRequest
0 голосов
/ 17 мая 2019

В настоящее время мне поручено реализовать инструмент, который взаимодействует с REST-API Magento 2

Magento2 предоставляет схему Swagger 2.0 JSON , которая позволила мне (после исправления многочисленных проблем в схеме) для генерации правильного клиента с помощью NSwag.

Проблема теперь заключается в следующем: REST API Magento 2 в некоторых моментах не соответствует своей спецификации.

Я уже решил некоторые проблемы, исправив сгенерированный код вручную.Однако я постоянно сталкиваюсь с новыми проблемами из-за того, что спецификация не соответствует действительности в отношении типа.

Например, схема указывает:

"framework-attribute-interface": {
    "type": "object",
    "description": "Interface for custom attribute value.",
    "properties": {
        "attribute_code": {
            "type": "string",
            "description": "Attribute code"
        },
        "value": {
            "type": "string",
            "description": "Attribute value"
        }
    },
    "required": ["attribute_code", "value"]
}

однако реальный API может возвращатьstring или array, как показано в этом примере фрагмента ответа:

{
    "attribute_code": "category_ids",
    "value": ["6", "8", "16"]
}, {
    "attribute_code": "required_options",
    "value": "0"
}

Хотя я мог бы потратить несколько дней, чтобы протестировать весь API и все исправить, я хочу избежать этого по очевидным причинам (время).Таким образом, вопрос теперь более или менее существует, есть какой-то простой, ленивый способ «автоматически конвертировать» все (хотите избежать dynamic btw.)?

Используемая среда JSON - Newtonsoft.Json.Связь работает через .NET Framework System.Net.Http.HttpClient

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...