Ocelot不支持的幾個方面json
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規範的東西。可是我不打算這樣作。測試