博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ocelot(八)- Ocelot不支持的几个方面
阅读量:7159 次
发布时间:2019-06-29

本文共 1249 字,大约阅读时间需要 4 分钟。

不支持

Ocelot不支持的几个方面

  • Chunked Encoding - Ocelot将始终获取正文大小并返回Content-Length标头。很抱歉,如果这对您的用例不起作用!
  • 转发主机标头 - 您发送给Ocelot的主机标头不会转发到下游服务。显然这会打破一切:(
  • 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(这应该像授予对repo等的访问权限一样简单)或者使用Ocelot管理API以便他们可以查询Ocelot用于配置。

除此之外,许多人还将Ocelot配置为将所有流量(例如/ products / {everything}代理到他们的产品服务中,如果解析了这个并将其转换为Swagger路径,则不会描述实际可用的流量。此外,Ocelot没有下游服务可以返回的模型的概念,并且链接到上述问题,相同的端点可以返回多个模型。Ocelot不知道在POST,PUT等中可能会使用哪些模型,所以这一切都有点乱,最后Swashbuckle包如果在运行时发生变化则不会重新加载swagger.json。Ocelot的配置可以在运行时更改,因此Swagger和Ocelot信息不匹配。除非我推出自己的Swagger实现。

如果用户希望能够轻松地对Ocelot API进行测试,那么我建议使用Postman作为一种简单的方法来执行此操作。甚至可以编写一些将ocelot.json映射到邮差json规范的东西。但是我不打算这样做。

转载于:https://www.cnblogs.com/letyouknowdotnet/p/11024167.html

你可能感兴趣的文章
Maven详解
查看>>
[Android Memory] Android 的 StrictMode
查看>>
学java快2月了,对其应该有点清晰的认识了
查看>>
[NOI2006]最大获利
查看>>
@Html.Raw() 方法输出带有html标签的字符串
查看>>
HttpUtility.UrlEncode,Server.UrlEncode 的区别
查看>>
设计模式
查看>>
Java数组
查看>>
用servlet进行用户名和密码校验
查看>>
思维的误区之工资
查看>>
数据层缓存优化
查看>>
【转载】#349 - The Difference Between Virtual and Non-Virtual Methods
查看>>
断点续传,下载。
查看>>
怎样使Dialog像Activity一样随心所欲的使用?
查看>>
[Android] 使用Include布局+Fragment滑动切换屏幕
查看>>
ztree获取选中节点
查看>>
2018.09.12python学习第2天
查看>>
js选择一个选项 跳出另一个选项 跳出一个输入框
查看>>
垂直滚动TextView中的文本
查看>>
《编译器设计》读书笔记——上下文相关分析
查看>>