zoukankan      html  css  js  c++  java
  • Ocelot中文文档-Not Supported

    Not Supported

    Ocelot不支持以下几种情况

    • 块级编码(Chunked Encoding ) - Ocelot始终会获取消息体的大小并返回内容长度(Content-Length)。这种情况它是不会工作的。
    • 转发主机头信息(Fowarding a Host Header)- 你发送主机头Ocelot不会转发到下游服务。很明显这回打破一切。
    • Swagger - 我多次编译 swagger.json 在没有 Ocelot的ocelot.jso,但是都失败了

    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。然而我不打算这样做。

  • 相关阅读:
    照片墙效果一多实例演示【已封装】
    把javascript event事件封装了下,兼容大多数浏览器
    catch error
    call tcl from c
    scrollbar
    sharedlibextension
    treectrl
    get file name part
    namespace eval
    glob
  • 原文地址:https://www.cnblogs.com/ms27946/p/Ocelot-ChineseDoc-NotSupported.html
Copyright © 2011-2022 走看看