Ocelot不支持以下几种情况
Ocelot对于这种情况,如果你想在Ocelot使用Swagger,那么你必须抛弃自己的swagger.json并且在你的Startup.cs以及Program.cs按照下面的这么做。这个代码例子注册中间件并加载你丢掉的swagger.json,并返回 /swagger/v1/swagger.json。它会注册SwaggerUI中间件从Swashbuckle.AspNetCore
app.Map("/swagger/v1/swagger.json", b =>
{
b.Run(async x => {
var json = File.ReadAllText("swagger.json");
await x.Response.WriteAsync(json);
});
});
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Ocelot");
});
app.UseOcelot().Wait();
我不认为Swagger有意义的主要原因是我们已经在ocelot.json定义了。如果我们想人们对Ocelot进行开发,就可以看到那些路由是可用的,或者共享ocelot.json(就像授权访问repo一样容易)或者使用Ocelot管理配置接口以至于他们能够查询Ocelot的配置内容。
另外,有许多人将配置Ocelot来代理所有通讯 就像 /products/{everything}到他们的产品服务并且如果你转换并返回一个Swagger路径,你也不会描述实际可用的内容。并且,Ocelot没有模型的概念,下游服务能返回并链接到上面的问题,相同的端点可以返回多个模型。Ocelot不知道那个模型用的POST,PUT等,所以它变得混乱,并且最后Swashbukle不会重新加载swagger.json当配置文件在运行时发生改变的时候。Ocelot的配置能够在运行时改变,以至于让Ocelot和Swagger的信息无法匹配。除非我自己实现一个自定义的 Swagger的实现。
如果用户想对Ocelot APi进行简单的测试,那么我建议使用Postman作为一个简单的方法。甚至可以写一些东西来映射ocelot.json到postman。然而我不打算这样做。
原文:https://www.cnblogs.com/ms27946/p/Ocelot-ChineseDoc-NotSupported.html