如何使用 Swashbuckle.AspNetCore 为 ReDoc 添加 x-code-samples?
How to add x-code-samples for ReDoc with Swashbuckle.AspNetCore?
添加 x-code-samples for ReDoc to swagger.json through Swashbuckle.AspNetCore.Annotations 的最佳方法是什么?
编辑(2019 年 3 月 30 日)
我希望这是一个更好的解释。
Swashbuckle.AspNetCore中有一种方法可以将内容添加到生成的swagger.json.
记录的内容
(示例来自 GitHub-Page):
[HttpPost]
[SwaggerOperation(
Summary = "Creates a new product",
Description = "Requires admin privileges",
OperationId = "CreateProduct",
Tags = new[] { "Purchase", "Products" }
)]
public IActionResult Create([FromBody]Product product)
关于我努力实现的目标
我想做的是这样的:
[MyCustomSwaggerOperation(
x-code-samples = [
{
"lang": "CSharp",
"source": "console.log('Hello World');"
},
{
"lang": "php",
"source": ...
}
]
)]
public IActionResult Create([FromBody]Product product)
这是一个将 "x-code-samples" 注入参数
的 IDocumentFilter
public class InjectSamples : IDocumentFilter
{
public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
{
PathItem path = swaggerDoc.Paths.Where(x => x.Key.Contains("Values")).First().Value;
path.Post.Parameters.FirstOrDefault().Extensions.Add("x-code-samples", "123456");
}
}
是的,您可以使用注释使所有这些复杂化,但是 Swashbuckle 不支持开箱即用的 "x-code-samples",因此您必须创建自己的注释并在 iDocFilter 上使用它。
在评论中,您一直指出 IDocumentFilters 是在生成 swagger 文档之后添加的,是的,我们想要那个!
生成的 swagger.json 如下所示:
"post": {
"tags": [ "Values" ],
"operationId": "ApiValuesPost",
"consumes": [ "application/json" ],
"produces": [],
"parameters": [
{
"name": "value",
"in": "body",
"required": false,
"schema": { "type": "string" },
"x-code-samples": "123456"
}
],
"responses": {
"200": { "description": "Success" }
}
}
添加 x-code-samples for ReDoc to swagger.json through Swashbuckle.AspNetCore.Annotations 的最佳方法是什么?
编辑(2019 年 3 月 30 日)
我希望这是一个更好的解释。 Swashbuckle.AspNetCore中有一种方法可以将内容添加到生成的swagger.json.
记录的内容 (示例来自 GitHub-Page):
[HttpPost]
[SwaggerOperation(
Summary = "Creates a new product",
Description = "Requires admin privileges",
OperationId = "CreateProduct",
Tags = new[] { "Purchase", "Products" }
)]
public IActionResult Create([FromBody]Product product)
关于我努力实现的目标
我想做的是这样的:
[MyCustomSwaggerOperation(
x-code-samples = [
{
"lang": "CSharp",
"source": "console.log('Hello World');"
},
{
"lang": "php",
"source": ...
}
]
)]
public IActionResult Create([FromBody]Product product)
这是一个将 "x-code-samples" 注入参数
的 IDocumentFilterpublic class InjectSamples : IDocumentFilter
{
public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
{
PathItem path = swaggerDoc.Paths.Where(x => x.Key.Contains("Values")).First().Value;
path.Post.Parameters.FirstOrDefault().Extensions.Add("x-code-samples", "123456");
}
}
是的,您可以使用注释使所有这些复杂化,但是 Swashbuckle 不支持开箱即用的 "x-code-samples",因此您必须创建自己的注释并在 iDocFilter 上使用它。
在评论中,您一直指出 IDocumentFilters 是在生成 swagger 文档之后添加的,是的,我们想要那个!
生成的 swagger.json 如下所示:
"post": {
"tags": [ "Values" ],
"operationId": "ApiValuesPost",
"consumes": [ "application/json" ],
"produces": [],
"parameters": [
{
"name": "value",
"in": "body",
"required": false,
"schema": { "type": "string" },
"x-code-samples": "123456"
}
],
"responses": {
"200": { "description": "Success" }
}
}