Ocelot不支持一下几点...

  • 分块编码 - Ocelot将始终获取body大小并返回Content-Length头。 如果这不适合你的场景,只能表示抱歉!
  • 转发host头 - 您发给Ocelot的host头不会转发给下游服务。显然这会打破一切 :(
  • Swagger - 我已经多次看过从Ocelot的ocelot.json构建swagger.json,但它看起来不适合

我有Ocelot就够了。如果您想在Ocelot中使用Swagger,那么您必须生成自己的swagger.json,并在Startup.cs或Program.cs中执行以下操作。 下面的代码示例注册了一个加载您手动生成的swagger.json并将其返回到/swagger/v1/swagger.json的中间件。 然后使用Swashbuckle.AspNetCore注册SwaggerUI中间件。

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(这应该与访问仓库一样简单)或者使用Ocelot管理API,以便他们可以查询Ocelot的配置。

除此之外,许多人还会配置Ocelot将所有流量例如/products/{everything}代理到产品服务,如果您解析并将其转换为Swagger路径,则不会描述实际可用的内容。另外Ocelot没有有关下游服务可以返回模型的概念,并且连接到上述一个端口可以返回多个模型的问题。Ocelot不知道哪些模块需要使用POST还是PUT,所以会变得混乱,最后当swagger.json在运行时发生变化是,Swashbuckle 包不会重新加载它。Ocelot的配置可以在运行时更改,这样导致Swagger和Ocelot的信息不匹配。除非我推出我自己的Swagger实现。

如果有人想要对Ocelot API 进行简单的测试,我建议使用Postman。甚至可以写一些将ocelot.json映射到postman json规范的东西。但是我不打算这样做。

Ocelot中文文档-不支持的更多相关文章

  1. Ocelot中文文档-Route

    路由(Routing) Ocelot主要功能是接收即将发来的请求并转发它们至下游服务.与此同时,以另一个http请求的形式(在将来这可能是任何传输的机制) Ocelot将一个请求的路由描述为另一个路由 ...

  2. Ocelot中文文档入门

    入门 Ocelot仅适用于.NET Core,目前是根据netstandard2.0构建的,如果Ocelot适合您,这个文档可能会有用. .NET Core 2.1 安装NuGet包 使用nuget安 ...

  3. Ocelot中文文档-路由

    Ocelot的主要功能是接管进入的http请求并把它们转发给下游服务.目前是以另一个http请求的形式(将来可能是任何传输机制). Ocelot将路由一个请求到另一个请求描述为ReRoute.为了在O ...

  4. Ocelot中文文档-管理

    Ocelot支持在运行时通过一个认证的Http API修改配置.有两种方式对其验证, 使用Ocelot的内置IdentityServer(仅用于向管理API验证请求)或将管理API验证挂接到您自己的I ...

  5. Ocelot中文文档-跟踪

    Ocelot使用一个杰出的项目Butterfly 提供了跟踪功能. 为了使用跟踪,请阅读Butterfly的文档. 在Ocelot中如果你想跟踪一个ReRoute,你需要做如下事情: 在Configu ...

  6. Ocelot中文文档-Raft(实验功能不能用于生产环境)

    Ocelot最近整合了Rafty,这是我在去年一直研究的Raft的一个实现. 这个项目实验性非常强,所以在我认为它没问题之前,请不要在生产环境中使用Ocelot的这个功能. Raft是一种分布式一致性 ...

  7. Ocelot中文文档-配置

    这里有一个配置的列子.其中有两个配置块.一个ReRoutes数组和一个GlobalConfiguration.ReRoutes配置块是一些告诉Ocelot如何处理上游请求的对象.Globalconfi ...

  8. Ocelot中文文档-流量控制

    感谢@catcherwong 的文章激励我最终写出了这个文档 Ocelot支持上游的请求限制,以便您的下游服务不会过载. 此功能是由GitHub上的@geffzhang添加! 非常感谢. 好了,为了让 ...

  9. .NET Core开源API网关 – Ocelot中文文档

    Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由.请求聚合.服务发现.认证.鉴权.限流熔断.并内置了负载均衡器与Service Fabric.Butterfly ...

随机推荐

  1. [C++学习历程]基础部分 C++中的指针数组和结构

    作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/19938177 一.指针 对学习C++来说,指针是一项重要内容,以前,教 ...

  2. (五十五)iOS多线程之GCD

    GCD的全称为Grand Central Dispatch,翻译为大中央调度,是Apple开发的一个多线程编程解决方法. 进程和线程的概念: 正在进行中的程序被称为进程,负责程序运行的内存分配,每一个 ...

  3. Linux进程实践(2) --僵尸进程与文件共享

    孤儿进程与僵尸进程 孤儿进程: 如果父进程先退出,子进程还没退出那么子进程的父进程将变为init进程.(注:任何一个进程都必须有父进程) //生成孤儿进程 int main(int argc, cha ...

  4. Windows200864位操作系统下的SQLPLUS.EXE 无法找到入口解决办法和Oracle环境变量的设置

    本机环境:Windows2008 64位中文版操作系统+Oracle11G+安装了Oracle32位和64位客户端驱动 问题起源:Path环境变量被360安全卫士优化修复后,整个给清空了,hosts文 ...

  5. Dynamics CRM 通过OData查询数据URI中包含中文的情况

    filter条件如下"?$filter=new_name eq '采购主管' and new_entityname eq 'new_purchaseenquiry' ",如果用这个 ...

  6. Django应用部署 - 上线指南

    http://blog.csdn.net/pipisorry/article/details/46957613 python manage.py runserver已经很接近于服务器的形式,但是并不能 ...

  7. Java-HttpSession监听

    //HttpSession监听 public interface HttpSessionActivationListener extends EventListener { /** Notificat ...

  8. DiskLruCache硬盘缓存技术详解

    上次讲了使用内存缓存LruCache去加载很多图片而不造成OOM,而这种缓存的特点是在应用程序运行时管理内存中的资源(图片)的存储和释放,如果LruCache中有一张图片被释放了,再次加载该图片时需要 ...

  9. EBS initialization parameters - Healthcheck

    APPLIES TO: Oracle EBS Applications Performance - Version 11.5.10.2 to 12.2 [Release 11.5.10 to 12.2 ...

  10. leetcode之旅(8)-Contains Duplicate

    题目: Given an array of integers, find if the array contains any duplicates. Your function should retu ...