Как удалить application / json из Swagger-UI, включенного в Swashbuckle для asp.net

#asp.net-web-api #swagger #swagger-ui #swashbuckle #swashbuckle.examples

#asp.net-web-api #swagger #swagger-ui #удалец #swashbuckle.examples #swashbuckle

Вопрос:

У меня есть asp.net .net framework (не core), который я использую Swashbuckle для автоматической генерации документации Swagger для моего API.

Я также добавил примеры Swashbuckle.

Я хочу использовать SwaggerResponseExample , чтобы показать пример возвращаемых данных, но в пользовательском интерфейсе Swagger всегда есть результаты, вложенные в application/json

Здесь есть старая проблема, но обходного пути нет.

Есть ли какой-либо обходной путь для этого? Я не вижу дальнейших обновлений Swashbuckle (и, следовательно, любого встроенного пользовательского интерфейса Swagger).

Комментарии:

1. Дальнейших обновлений нет, потому что он перешел на .NET Core. Вам следует подумать о том, чтобы сделать то же самое.

2. @IanKemp Да, я действительно знаю это и надеюсь, что смогу пойти в upcoming.net 5, но на данный момент я просто не могу (существует много устаревших внутренних коммуникаций, чтобы избавиться, например, от сервера WCF к серверу). Просто надеялся на какой-то обходной путь, каким бы грязным он ни был.

3. Вы когда-нибудь находили решение для этого? Я тоже застрял внутри . Net framework и внезапно потерял сеть примеров.

4. @RudyScoggins нет, к сожалению, на данный момент я не смог использовать эту функцию

5. Смотрите мой ответ о том, как я это исправил.

Ответ №1:

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

В фильтре IOperation, который задает ваш пример, вы можете выполнить поиск по вашей операции, найти параметр данных тела вашей операции, который содержит модель, и установить значение свойства параметра «по умолчанию» для объекта JSON.

введите описание изображения здесь

Хотя это не исправит значение вашего примера справа, это, по крайней мере, предоставит способ получить пример в данных вашего запроса.

Надеюсь, это поможет кому-то застрять в .Net Framework с Swashbuckle.

Редактировать: вот некоторый код vb, который я использую для установки параметра data:

 Dim dataParameter = operation.parameters.Where(Function(z) z.name = "data").FirstOrDefault()
If dataParameter IsNot Nothing Then
  'Since upgrading to v5.6 for microsoft webAPI packages (at least that's the most likely reason), it appears to have broke request example JSON rendering on the now out of support Swashbuckle for .NET framework
  'If I set the default here, I can at least get it to load in the body text area, which is a decent workaround.
  Dim requestExample = GetRequestExample(operation.operationId)

  If requestExample Is Nothing Then Controller.Base.ThrowInternalError($"Issue with endpoint {operation.operationId}: No response example and no request example given.  Most likely, this is because you have a custom endpoint with a data parameter and did not put an example in ExamplesOperationFilter.GetRequestExample()")
  Dim requestExampleProvider = DirectCast(Activator.CreateInstance(requestExample), IProvideExamples)
  dataParameter.default = FormatAsJson(requestExampleProvider).ToString

End If
  

Комментарии:

1. Не могли бы вы поделиться блоком кода о том, как подать заявку в IOperationFilter, пожалуйста.