Aiursoft.DocGenerator
8.0.2
dotnet add package Aiursoft.DocGenerator --version 8.0.2
NuGet\Install-Package Aiursoft.DocGenerator -Version 8.0.2
<PackageReference Include="Aiursoft.DocGenerator" Version="8.0.2" />
paket add Aiursoft.DocGenerator --version 8.0.2
#r "nuget: Aiursoft.DocGenerator, 8.0.2"
// Install Aiursoft.DocGenerator as a Cake Addin #addin nuget:?package=Aiursoft.DocGenerator&version=8.0.2 // Install Aiursoft.DocGenerator as a Cake Tool #tool nuget:?package=Aiursoft.DocGenerator&version=8.0.2
ASP.NET Core API Document Generator
A basic API document generator for ASP.NET Core applications. Open source, offline and free.
<div align=center> <img src="./demo.png"> </div>
Features
- Generate Markdown
- Generate Json
Supports
- ASP.NET Core 6.0
How to use
First, install Aiursoft.DocGenerator
to your ASP.NET Core project from nuget.org:
dotnet add package Aiursoft.DocGenerator
Simply add this line in your Startup.cs
:
using Aiursoft.DocGenerator.Services;
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...
// your middlewares
// ...
app.UseAiursoftDocGenerator(); // <- Add this.
}
Start your application and browse:
/doc
It just returns your document in JSON format.
[{
"ControllerName": "HomeController",
"ActionName": "Index",
"AuthRequired": false,
"IsPost": false,
"Arguments": [],
"PossibleResponses": ["{\"code\":0,\"message\":\"success.\"}"]
}]
That's all! Happy coding!
Continue? Try runing the example project! Or continue reading.
Customization and API
Change document output address
app.UseAiursoftDocGenerator(options =>
{
// Default value is '/doc'. You can change it to other path.
options.DocAddress = "/my-doc";
});
Change document output format
app.UseAiursoftDocGenerator(options =>
{
// Default format is JSON. You can change it to markdown.
options.Format = DocFormat.Markdown;
});
Set global possible responses
app.UseAiursoftDocGenerator(options =>
{
// Default global possible response is an empty list.
options.GlobalPossibleResponse.Add(new { code = 0, message = "success." });
});
Set possible response for one API
When you can ensure the possible response for one API, add this line to your action:
[Produces(typeof(ResponseModel))] // <- add this in your controller.
public IActionResult HasOutput()
{
var model = new ResponseModel(); // <- your own class and logic
return Json(model);
}
Document generation filter
By default, only controllers and actions with [GenerateDoc]
attributes will be generated.
To mark a controller or action which generates document, add attribute [GenerateDoc]
like this:
using Aiursoft.DocGenerator.Attribute;
[GenerateDoc] // Add this, the entire controller will generate document.
public class HomeController : Controller
{
[GenerateDoc] // Add this, the action will generate document.
public IActionResult MyAPI()
{
return Json(null);
}
}
You can change that logic to your own filter:
app.UseAiursoftDocGenerator(options =>
{
options.IsAPIAction = (action, controller) =>
{
// Your own logic. Return bool.
return action.CustomAttributes.Any(t => t.AttributeType == typeof(GenerateDoc));
};
}
Authorized action detector
If your API is authorized required, we can detect that in the document. And you can customzie the logic:
using Microsoft.AspNetCore.Authorization;
app.UseAiursoftDocGenerator(options =>
{
options.JudgeAuthorized = (action, controller) =>
{
// Your own logic here. Return bool.
return
action.CustomAttributes.Any(t => t.AttributeType == typeof(AuthorizeAttribute)) ||
controller.CustomAttributes.Any(t => t.AttributeType == typeof(AuthorizeAttribute));
};
}
How to contribute
There are many ways to contribute to the project: logging bugs, submitting pull requests, reporting issues, and creating suggestions.
Even if you with push rights on the repository, you should create a personal fork and create feature branches there when you need them. This keeps the main repository clean and your workflow cruft out of sight.
We're also interested in your feedback on the future of this project. You can submit a suggestion or feature request through the issue tracker. To make this process more effective, we're asking that these include more information to help define them more clearly.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net8.0
- Aiursoft.DocGenerator.Abstractions (>= 8.0.0)
- Aiursoft.Scanner.Abstractions (>= 8.0.0)
- Markdig (>= 0.38.0)
- Newtonsoft.Json (>= 13.0.3)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Aiursoft.DocGenerator:
Package | Downloads |
---|---|
Aiursoft.SDK
The base class, tools and extends for Aiursoft web apps. |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on Aiursoft.DocGenerator:
Repository | Stars |
---|---|
AiursoftWeb/Infrastructures
Mirror of: https://gitlab.aiursoft.cn/aiursoft/infrastructures
|
Version | Downloads | Last updated |
---|---|---|
8.0.2 | 103 | 10/26/2024 |
8.0.1 | 490 | 2/19/2024 |
8.0.0 | 133 | 2/19/2024 |
7.0.3 | 141 | 2/2/2024 |
7.0.2 | 120 | 1/30/2024 |
7.0.1 | 1,101 | 11/23/2023 |
7.0.0 | 1,149 | 9/5/2023 |
6.0.26 | 139 | 9/5/2023 |
6.0.25 | 560 | 6/26/2023 |
6.0.24 | 169 | 6/26/2023 |
6.0.22 | 306 | 6/18/2023 |
6.0.21 | 257 | 6/14/2023 |
6.0.20 | 260 | 6/5/2023 |
6.0.19 | 276 | 5/27/2023 |
6.0.18 | 268 | 5/27/2023 |
6.0.17 | 282 | 5/27/2023 |
6.0.16 | 272 | 5/27/2023 |
6.0.15 | 273 | 5/27/2023 |
6.0.14 | 266 | 5/27/2023 |
6.0.13 | 261 | 5/19/2023 |
6.0.12 | 255 | 5/19/2023 |
6.0.11 | 253 | 5/19/2023 |
6.0.10 | 250 | 5/19/2023 |
6.0.9 | 261 | 5/19/2023 |
6.0.8 | 268 | 5/11/2023 |
6.0.7 | 2,344 | 8/4/2022 |
6.0.6 | 878 | 7/6/2022 |
6.0.5 | 1,130 | 5/13/2022 |
6.0.0 | 974 | 3/27/2022 |
5.0.9 | 966 | 5/31/2021 |
5.0.8 | 857 | 5/23/2021 |
5.0.7 | 849 | 5/7/2021 |
5.0.6 | 849 | 4/14/2021 |
5.0.5 | 928 | 2/16/2021 |
5.0.4 | 863 | 1/29/2021 |
5.0.3 | 868 | 1/27/2021 |
5.0.2 | 956 | 12/9/2020 |
5.0.1 | 862 | 11/30/2020 |
5.0.0 | 779 | 11/14/2020 |
3.2.11 | 1,031 | 10/18/2020 |
3.2.10 | 974 | 10/3/2020 |
3.2.9 | 904 | 10/2/2020 |
3.2.8 | 973 | 9/10/2020 |
3.2.7 | 953 | 9/2/2020 |
3.2.6 | 1,024 | 8/12/2020 |
3.2.5 | 1,021 | 7/31/2020 |
3.2.4 | 987 | 7/3/2020 |
3.2.3 | 944 | 6/25/2020 |
3.2.2 | 964 | 6/18/2020 |
3.2.1 | 965 | 6/5/2020 |
3.2.0 | 1,003 | 6/4/2020 |
3.1.14 | 1,188 | 6/4/2020 |
3.1.13 | 1,103 | 5/25/2020 |
3.1.12 | 1,095 | 5/20/2020 |
3.1.11 | 1,060 | 5/18/2020 |
3.1.10 | 1,064 | 5/18/2020 |
3.1.9 | 1,066 | 5/17/2020 |
3.1.8 | 1,063 | 5/12/2020 |
3.1.7 | 1,126 | 5/2/2020 |
3.1.6 | 1,119 | 5/1/2020 |
3.1.5 | 1,098 | 4/21/2020 |
3.1.4 | 839 | 4/19/2020 |
3.1.3 | 1,626 | 4/15/2020 |
3.1.2.2 | 1,805 | 4/6/2020 |
3.1.2.1 | 1,690 | 3/19/2020 |
3.1.2 | 1,731 | 2/21/2020 |
3.1.1.8 | 1,373 | 2/17/2020 |
3.1.1.7 | 1,344 | 2/14/2020 |
3.1.1.6 | 1,146 | 1/28/2020 |
3.1.1.5 | 1,424 | 1/22/2020 |
3.1.1.4 | 1,134 | 1/21/2020 |
3.1.1.2 | 1,143 | 1/20/2020 |
3.1.1 | 887 | 1/17/2020 |