Ocelot(八)- Ocelot不支持的幾個方面

不支持

Ocelot不支持的幾個方面json

  • 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用於配置。app

除此以外,許多人還將Ocelot配置爲將全部流量(例如/ products / {everything}代理到他們的產品服務中,若是解析了這個並將其轉換爲Swagger路徑,則不會描述實際可用的流量。此外,Ocelot沒有下游服務能夠返回的模型的概念,而且連接到上述問題,相同的端點能夠返回多個模型。Ocelot不知道在POST,PUT等中可能會使用哪些模型,因此這一切都有點亂,最後Swashbuckle包若是在運行時發生變化則不會從新加載swagger.json。Ocelot的配置能夠在運行時更改,所以Swagger和Ocelot信息不匹配。除非我推出本身的Swagger實現。async

若是用戶但願可以輕鬆地對Ocelot API進行測試,那麼我建議使用Postman做爲一種簡單的方法來執行此操做。甚至能夠編寫一些將ocelot.json映射到郵差json規範的東西。可是我不打算這樣作。測試

相關文章
相關標籤/搜索