NSwag добавляет три параметра в некоторые из моих методов - PullRequest
1 голос
/ 20 мая 2019

Swagger добавляет три дополнительных параметра в пользовательском интерфейсе.Это делается только двумя способами.Остальные три в порядке.Все они определены примерно одинаково.Единственное различие, которое я вижу, - это порядок параметров ([FromBody] первым о методах-нарушителях).

Я исследовал Google и не могу найти никого, имеющего ту же проблему.Единственное, что я мог попробовать, это изменить порядок параметров.

// Does not have the parameters
[HttpPost]
[Route ( "api/Processor/GetHtmlWithByteArrays" )]
public JsonResult GetHtmlWithByteArrays ( [FromQuery] List<string> roles, [FromBody] List<byte[ ]> files ) => new JsonResult ( Processor.GetHtml ( roles, files ) );

// Has the extra parameters
[HttpPost]
[Route ( "api/Processor/GetDocFromHtmlString" )]
public JsonResult GetDocFromHtmlString ( [FromBody] string htmlString, [FromQuery] DocType docType, [FromQuery] bool includeToc = true,
bool includeFooter = false ) => new JsonResult ( Processor.GetDocFromHtmlString ( htmlString, docType, includeToc, includeFooter ) );

Я бы ожидал, что SwaggerUI просто покажет параметры, которые я определил.Однако для двух моих методов добавляются следующие параметры:

Provider.SupportedExtensions
Provider.CanImport
Provider.CanExport

1 Ответ

2 голосов
/ 28 мая 2019

Я наконец понял, что это было вызвано тем, что я ссылаюсь на абстрактный класс (DocType). Я решил это, сославшись на Newtonsoft.Json и настроив класс с необходимыми украшениями, чтобы Json знал, как его решить. Известные типы - это объекты, которые наследуют абстрактный класс. Я надеюсь, что это помогает любому, у кого есть подобная проблема.

[ JsonConverter ( typeof ( JsonInheritanceConverter ), "discriminator" ) ]
[ KnownType ( typeof ( Docx ) ) ]
[ KnownType ( typeof ( Html ) ) ]
[ KnownType ( typeof ( Pdf ) ) ]
[ KnownType ( typeof ( Rtf ) ) ]
[ KnownType ( typeof ( Txt ) ) ]
...