Back to "模块结构示例"

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

AI AI-Article API ASP.NET Core LLM LLMApi mockllmapi Nuget

模块结构示例

Sunday, 02 November 2025

注意:这是为 olmapi 发布的文件, 只是忽略

N Nuget 元数 N Nuget 元数

你可以找到 吉特Hub在这里 对于项目,所有公共领域等等...

新建于 v1.2. 0 : 完全模块化! 每个协议(REST、流、图QL、信号R)现在都可以单独添加和绘制。

目录目录目录


向后兼容(统一办法)

现行守则继续运作,未作任何改动:

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Registers ALL services (REST, Streaming, GraphQL)
builder.Services.AddLLMockApi(builder.Configuration);

// Optional: Add SignalR
builder.Services.AddLLMockSignalR(builder.Configuration);

builder.Services.AddRazorPages();

var app = builder.Build();

app.UseStaticFiles();
app.UseRouting();
app.MapRazorPages();

// Maps ALL endpoints (REST, Streaming, GraphQL) at /api/mock
app.MapLLMockApi("/api/mock", includeStreaming: true, includeGraphQL: true);

// Optional: Map SignalR
app.MapLLMockSignalR("/hub/mock", "/api/mock");

app.Run();

创建 :

  • /api/mock/** - REST 终点
  • /api/mock/stream/** - SSE 流流端点
  • /api/mock/graphql - 图QL 终点
  • /hub/mock - 信号中枢(如果增加)
  • /api/mock/contexts - 无线电信号管理API(如果增加)

模块式方法

仅只只选择

完全适合在没有额外开支的情况下 进行简单的REST API模拟游戏:

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Register ONLY REST services
builder.Services.AddLLMockRest(builder.Configuration);

var app = builder.Build();

app.UseRouting();

// Map ONLY REST endpoints
app.MapLLMockRest("/api/mock");

app.Run();

创建 :

  • /api/mock/** - 仅限REST端点

效益:

  • 最小记忆足迹
  • 快速启动时间
  • 仅包括常规请求请求Handler

仅图解QL

仅用于图形QL应用程序的完美 :

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Register ONLY GraphQL services
builder.Services.AddLLMockGraphQL(builder.Configuration);

var app = builder.Build();

app.UseRouting();

// Map ONLY GraphQL endpoint
app.MapLLMockGraphQL("/api/mock");

app.Run();

创建 :

  • /api/mock/graphql - 仅图QL端点

效益:

  • Clecle GracQL 只使用图形设置
  • 无不必要的 REST 处理器
  • GraphQL 客户端测试完美

只流流流

适合测试 SSE 流客户端 :

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Register ONLY Streaming services
builder.Services.AddLLMockStreaming(builder.Configuration);

var app = builder.Build();

app.UseRouting();

// Map ONLY Streaming endpoints
app.MapLLMockStreaming("/api/mock");

app.Run();

创建 :

  • /api/mock/stream/** - 仅 SSE 流流端点

效益:

  • 轻量量量流设置
  • 完全用于事件源测试
  • 无REST/GraphQL间接费用

仅信号

适合实时仪表板原型:

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Register ONLY SignalR services (includes core services automatically)
builder.Services.AddLLMockSignalR(options =>
{
    options.BaseUrl = "http://localhost:11434/v1/";
    options.ModelName = "llama3";
    options.SignalRPushIntervalMs = 5000;
});

var app = builder.Build();

app.UseRouting();

// Map ONLY SignalR endpoints
app.MapLLMockSignalR("/hub/mock", "/api/contexts");

app.Run();

创建 :

  • /hub/mock - 信号中枢
  • /api/contexts - 背景管理 AIP

效益:

  • 仅实时安装
  • 没有 HTTP 终端间接费用
  • 适合 WebSock 测试

混合和匹配

使用案件所需的合并协议 :

实例1:REST + 图形QL(无流流)

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Register REST and GraphQL services
builder.Services.AddLLMockRest(builder.Configuration);
builder.Services.AddLLMockGraphQL(builder.Configuration);

var app = builder.Build();

app.UseRouting();

// Map both protocols
app.MapLLMockRest("/api/mock");
app.MapLLMockGraphQL("/api/mock");

app.Run();

创建 :

  • /api/mock/** - REST 终点
  • /api/mock/graphql - 图QL 终点
  • 无串流端点

实例2:图形QL+信号R(无REST)

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Register GraphQL and SignalR services
builder.Services.AddLLMockGraphQL(builder.Configuration);
builder.Services.AddLLMockSignalR(builder.Configuration);

var app = builder.Build();

app.UseRouting();

// Map both protocols
app.MapLLMockGraphQL("/api/queries");
app.MapLLMockSignalR("/hub/realtime", "/api/contexts");

app.Run();

创建 :

  • /api/queries/graphql - 图QL 终点
  • /hub/realtime - 信号中枢
  • /api/contexts - 信号管理API
  • 没有 REST 或 SSE 端点

实例3:所有不同模式的事物

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Register all services modularly
builder.Services.AddLLMockRest(builder.Configuration);
builder.Services.AddLLMockStreaming(builder.Configuration);
builder.Services.AddLLMockGraphQL(builder.Configuration);
builder.Services.AddLLMockSignalR(builder.Configuration);

var app = builder.Build();

app.UseRouting();

// Map each protocol with custom patterns
app.MapLLMockRest("/api/rest");           // /api/rest/**
app.MapLLMockStreaming("/api/stream");    // /api/stream/stream/**
app.MapLLMockGraphQL("/api/graphql");     // /api/graphql/graphql
app.MapLLMockSignalR("/hub/live", "/api/hub");

app.Run();

创建 :

  • /api/rest/** - REST 终点
  • /api/stream/stream/** - SSE流流
  • /api/graphql/graphql - 图QL 终点
  • /hub/live - 信号中枢
  • /api/hub/contexts - 信号管理

多个实例

运行多个独立的模拟 API, 配置不同 :

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Development endpoints - high randomness
builder.Services.AddLLMockRest(options =>
{
    options.BaseUrl = "http://localhost:11434/v1/";
    options.ModelName = "llama3";
    options.Temperature = 1.5;
});

builder.Services.AddLLMockGraphQL(options =>
{
    options.BaseUrl = "http://localhost:11434/v1/";
    options.ModelName = "llama3";
    options.Temperature = 1.5;
});

var app = builder.Build();

app.UseRouting();

// Development endpoints
app.MapLLMockRest("/api/dev");
app.MapLLMockGraphQL("/api/dev");

// Stable test endpoints (would need separate config)
app.MapLLMockRest("/api/test");
app.MapLLMockGraphQL("/api/test");

app.Run();

模块化方法的惠益

1. 减少内存足印

只装入您实际使用的处理器 :

  • 仅限 REST: ~ 30% 减内存
  • 仅图形QL: ~ 40% 减去内存
  • 只流流: ~ 40% 减内存

2. 快速启动启动

注册服务减少 = 更快的应用程序启动

3. 更清晰的意图意图

代码明确显示您应用程序使用的协议

4. 较易测试

单独测试协议:

// Test file for REST only
builder.Services.AddLLMockRest(config);
app.MapLLMockRest("/api/mock");

// Test file for GraphQL only
builder.Services.AddLLMockGraphQL(config);
app.MapLLMockGraphQL("/api/mock");

5. 无断断更改

现行守则继续发挥作用:

// This still works exactly as before
builder.Services.AddLLMockApi(configuration);
app.MapLLMockApi("/api/mock");

6. 灵活模式

任何路径的挂载协议 :

app.MapLLMockRest("/rest");
app.MapLLMockGraphQL("/gql");
app.MapLLMockStreaming("/events");
app.MapLLMockSignalR("/ws", "/manage");

《移徙指南指南指南》

从 v1.1.0 到 v1.2.0

无需修改! 你现有的代码可以按原样运作

可选:为获得惠益而向模块化办法迁移

在 (v1. 1. 1. ) 之前 :

builder.Services.AddLLMockApi(builder.Configuration);
app.MapLLMockApi("/api/mock", includeStreaming: true, includeGraphQL: true);

之后 (v1.2.0 - 模块) :

// Only include what you need
builder.Services.AddLLMockRest(builder.Configuration);
builder.Services.AddLLMockGraphQL(builder.Configuration);

app.MapLLMockRest("/api/mock");
app.MapLLMockGraphQL("/api/mock");

这两种方法都同样有效,但模块化方法更明确、更有效率。


摘要摘要摘要

方法_ 添加方法_ 地图方法_ 使用案例_ |----------|------------|------------|----------| | 统一 | AddLLMockApi() | MapLLMockApi() 一切,后向兼容 | 休息 | AddLLMockRest() | MapLLMockRest() 简单的REST嘲弄 | 图QL | AddLLMockGraphQL() | MapLLMockGraphQL() | 串流 | AddLLMockStreaming() | MapLLMockStreaming() 只有SSE流 | 信号R | AddLLMockSignalR() | MapLLMockSignalR() 实时WebSocket数据 {______________________________________________________________________________________________________________________________________________________

选择最适合你需要的方法!

logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.