Ocelot 可以拥有自己的 Controller/Actions 吗?
Can Ocelot have it's own Controller/Actions?
我正在尝试组装一个 API 网关,该网关还用于混合对多个 API 的调用。我还想拥有自动生成的 Swagger,所以我想结合 Ocelot 的授权和速率限制功能,但也希望能够在 .NET 代码中创建边缘自定义 API 来处理API 个调用的翻译和组合。
这对 Ocelot 可行吗?有任何示例吗? Ocelot 是否仅作为单独的应用程序与下游 API 一起使用?我试图避免只存在于混搭和复合 API 调用的额外跃点。
Ocelot 不支持任何 auto-generated swagger。
但是你可以 hand-roll 你自己的 solution.As 据我所知,Ocelot 只能通过提供 ocelot.json 配置和你的 re-reroutes 配置到下游 apps/api
s.
这是一个如何在同一 NET6 应用程序中将控制器与 Ocelot 结合使用的示例。
来自Program.cs
using Ocelot.DependencyInjection;
using Ocelot.Middleware;
var builder = WebApplication.CreateBuilder(args);
builder.Configuration.AddJsonFile("ocelot.json");
builder.Services.AddControllersWithViews();
builder.Services.AddOcelot();
var app = builder.Build();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints => {
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
app.UseOcelot().Wait();
app.Run();
您还可以为此控制器添加 Swagger:
using Ocelot.DependencyInjection;
using Ocelot.Middleware;
var builder = WebApplication.CreateBuilder(args);
builder.Configuration.AddJsonFile("ocelot.json");
builder.Services.AddSwaggerGen();
builder.Services.AddControllersWithViews();
builder.Services.AddOcelot();
var app = builder.Build();
app.UseStaticFiles();
app.UseRouting();
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "v1");
});
app.UseEndpoints(endpoints => {
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
app.UseOcelot().Wait();
app.Run();
我正在尝试组装一个 API 网关,该网关还用于混合对多个 API 的调用。我还想拥有自动生成的 Swagger,所以我想结合 Ocelot 的授权和速率限制功能,但也希望能够在 .NET 代码中创建边缘自定义 API 来处理API 个调用的翻译和组合。
这对 Ocelot 可行吗?有任何示例吗? Ocelot 是否仅作为单独的应用程序与下游 API 一起使用?我试图避免只存在于混搭和复合 API 调用的额外跃点。
Ocelot 不支持任何 auto-generated swagger。 但是你可以 hand-roll 你自己的 solution.As 据我所知,Ocelot 只能通过提供 ocelot.json 配置和你的 re-reroutes 配置到下游 apps/api s.
这是一个如何在同一 NET6 应用程序中将控制器与 Ocelot 结合使用的示例。
来自Program.cs
using Ocelot.DependencyInjection;
using Ocelot.Middleware;
var builder = WebApplication.CreateBuilder(args);
builder.Configuration.AddJsonFile("ocelot.json");
builder.Services.AddControllersWithViews();
builder.Services.AddOcelot();
var app = builder.Build();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints => {
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
app.UseOcelot().Wait();
app.Run();
您还可以为此控制器添加 Swagger:
using Ocelot.DependencyInjection;
using Ocelot.Middleware;
var builder = WebApplication.CreateBuilder(args);
builder.Configuration.AddJsonFile("ocelot.json");
builder.Services.AddSwaggerGen();
builder.Services.AddControllersWithViews();
builder.Services.AddOcelot();
var app = builder.Build();
app.UseStaticFiles();
app.UseRouting();
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "v1");
});
app.UseEndpoints(endpoints => {
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
app.UseOcelot().Wait();
app.Run();