如何为SignalR生成API文档

时间:2015-03-09 17:47:15

标签: c# signalr swashbuckle code-documentation

有办法做到这一点吗?

我有swashbuckle为我的其他API生成内容,但我不相信它适用于SignalR。

3 个答案:

答案 0 :(得分:3)

这里有一个 Nuget 包可以帮助您。

Nuget 链接:https://www.nuget.org/packages/SignalRSwaggerGen/

Github 链接:https://github.com/Dorin-Mocan/SignalRSwaggerGen/wiki

首先,您需要使用 SignalRSwaggerGen.Attributes 命名空间中的属性装饰您的 SignalR 集线器:

[SignalRHub(path: "/hubs/SomeHub")]
public class SomeHub : Hub
{
    [SignalRMethod(name: "nameOfTheMethodCalledOnTheClientSide", operationType: OperationType.Put)] 
    public async Task SomeMethod([SignalRArg] int arg1, [SignalRArg] object arg2, CancellationToken cancellationToken = default)
    {
        if (Clients == null) return;
        await Clients.All.SendAsync("nameOfTheMethodCalledOnTheClientSide", arg1, arg2, cancellationToken);
    }
}

然后添加 SignalRSwaggerGen.SignalRSwaggerGen 类作为 Swagger 生成器的文档过滤器:

services.AddSwaggerGen(options =>
{
    options.SwaggerDoc("v1", new OpenApiInfo { Title = "Some API v1", Version = "v1" });
    // here some other configurations maybe...
    options.DocumentFilter<SignalRSwaggerGen.SignalRSwaggerGen>(new List<Assembly> { typeof(SomeHub).Assembly, typeof(SomeHubFromAnotherAssembly).Assembly });
});

有关更多信息,请参阅 Github 文档。

答案 1 :(得分:1)

我已根据评论建议成功地将SigSpec用于此目的。

我不得不修补一下,但是它确实完成了工作。

答案 2 :(得分:-1)

假设您使用的是Asp.NET Core,可以在启动时注入自定义文档。

在你的Startup.ConfigureServices中,你应该已经有了一个Swagger部分:

services.AddSwaggerGen(c =>
{
    ...
})

只需将自定义XML文件添加到Swagger文档:

services.AddSwaggerGen(c =>
{
    c.IncludeXmlComments("custom_doc.xml");
})

其中custom_doc.xml是标准的C#XML文档文件。