Самый простой способ обойти нарушения спецификации ответа API в C# REST-клиентеC#

Место общения программистов C#
Ответить
Anonymous
 Самый простой способ обойти нарушения спецификации ответа API в C# REST-клиенте

Сообщение Anonymous »

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

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

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

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

Например, в схеме указано:

Код: Выделить всё

"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 может возвращать строку или массив, как показано в этом примере фрагмента ответа:

Код: Выделить всё

{
"attribute_code": "category_ids",
"value": ["6", "8", "16"]
}, {
"attribute_code": "required_options",
"value": "0"
}
Хотя я мог бы потратить несколько дней на тестирование всего API и все исправить, я хочу избежать этого по очевидным причинам (время).
Теперь вопрос заключается в следующем. есть ли какой-нибудь простой и ленивый способ «автоматического преобразования» всего (кстати, хочу избежать динамического )?

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

Подробнее здесь: https://stackoverflow.com/questions/561 ... est-client
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»