数据合同反序列化器需要按照swagger样本请求体类型的升序进行反序列化吗?
如何才能使其正常工作?例如,这是由swagger生成的示例XML架构。
fig, ax = plt.subplots()
ax.plot(y)
plt.show()
我需要按字母顺序排序,以便数据合同deserialser对其进行反序列化。
答案 0 :(得分:1)
使用swagger 3,dotnet核心3.1 放置在Startup.cs中
public class SortModelDocumentFilter : Swashbuckle.AspNetCore.SwaggerGen.IDocumentFilter
{
public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
{
var schemas = swaggerDoc.Components.Schemas.OrderBy(x=>x.Key).ToDictionary(x=>x.Key,y=>y.Value);
swaggerDoc.Components.Schemas.Clear();
Console.WriteLine($"{schemas?.Count}");
foreach (var prop in schemas)
{
swaggerDoc.Components.Schemas.Add(prop.Key, prop.Value);
}
int k = 0;
foreach (var schema in schemas) Console.WriteLine($"{k++}. {schema.Key}");
}
}
,然后在ConfigureServices(IServiceCollection服务)中添加
services.AddSwaggerGen(x => {
...
x.DocumentFilter<SortModelDocumentFilter>();
});
答案 1 :(得分:0)
您在示例中看到的顺序正是模型中的顺序 如果您想更改订单,只需更改您的模型。
以下是该控制器背后的代码:
https://github.com/heldersepu/SwashbuckleTest/blob/master/Swagger_Test/Controllers/DictionaryController.cs#L25
如果不能更改模型,您可以创建一个 IDocumentFilter 来转换最终的SwaggerDocument以满足您的需求,这里有一些示例:
https://github.com/heldersepu/SwashbuckleTest/blob/master/Swagger_Test/App_Start/SwaggerConfig.cs#L301