我正在使用https://github.com/domaindrivendev/Swashbuckle.AspNetCore的最新2.4版本来生成具有2个参数的AspNetCore Controller方法的文档:guid和模型列表。
[HttpPost("MyMethod/{ReferenceId}")]
public async Task<IActionResult> MyMethod(Guid referenceId, List<ApiProfile> passengers)
第一个参数生成正确,但第二个参数不理解类型,只显示数组(无类型)
Passengers
array
(query)
在json:
"parameters": [
{
"name": "passengers",
"in": "query",
"description": "",
"required": false,
"type": "array",
"items": {},
"collectionFormat": "multi"
},
请注意,ApiProfile类型显示在“模型”部分的底部:
ApiProfile {
description: API Object
Id string($uuid)
Email string
salutation string
firstName string
lastName string
dateOfBirth string($date-time)
}
在json:
"definitions": {
"ApiProfile": {
"description": "API Object",
"type": "object",
"properties": {"Id": {"format": "uuid","type": "string"},
"Email": {"type": "string"},
"salutation": {"type": "string"},
"firstName": {"type": "string"}
...
我需要一个建议如何描述要在Swagger UI中显示的请求参数列表的类型。
我尝试分配[SwaggerRequestExample(typeof(PeopleRequest),typeof(ListPeopleRequestExample))],但不确定如何使用2个参数。 我也尝试暂时排除第一个参数,但行为相同。
更新:我创建了一个最小版本,但行为相同。
[Route("[controller]")]
public class SwashbuckleTest : Controller
{
[HttpPost]
[Route("{id}")]
public SwashbuckleTestProfile Post(Guid id, List<SwashbuckleTestProfile> companies)
{
return companies.FirstOrDefault();
}
}
public class SwashbuckleTestProfile
{
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
可以从https://github.com/MNF/Samples/tree/master/SwashbuckleExample
加载完整示例答案 0 :(得分:2)
你不应该做任何特别的事情或描述任何事情。
Swashbuckle应该照顾...
闻起来像一个bug
我测试了与我的项目Swagger-Net类似的东西,它渲染得很好:
http://swagger-net-test.azurewebsites.net/swagger/ui/index?filter=MultiParam#/MultiParamPost/MultiParamPost_Post
[Route("{id}")]
public Company Post(Guid id, List<Company> companies)
{
return companies.FirstOrDefault();
}
以下是代码输出的相关JSON:
{
"name": "companies",
"in": "body",
"required": true,
"schema": {
"items": {
"$ref": "#/definitions/Company"
},
"xml": {
"name": "Company",
"wrapped": true
},
"type": "array"
}
}
我想如果你真的想要获得Swashbuckle,你可以使用IDocumentFilter并将模式更改为更像我的模式。
更新在使用提供的最小版本播放后,似乎添加[FromBody]
会对Swashbuckle.AspNetCore中的架构进行重大更改
[Route("{id}")]
public Company Post(Guid id, [FromBody]List<Company> companies)