Swagger UI在我的控制器的GET动作中,对于我的复杂类型参数,不会渲染请求体参数字段。
Swagger UI在我的控制器的GET动作中,对于我的复杂类型参数,不会渲染请求体参数字段。
我有一个ASP.NET Web API 2项目,我在其中添加了Swagger - Swashbuckle v5.6.0。一切都正常工作。Swagger UI按预期渲染了我的API的测试端点。
我向我的API添加了一个新的控制器。其中包含一个带有复杂类型参数的GET
方法。对于复杂类型,Web API尝试从消息体中读取值。这是默认行为。
这是我的GET方法:
[HttpGet] [Route("search")] [ResponseType(typeof(List))] public IHttpActionResult Search(SearchModel searchOptions) { //.... return Ok(); }
这是我的复杂类型:
public class SearchModel { public string FirstName { get; set; } public string LastName { get; set; } [DataType(DataType.EmailAddress)] [EmailAddress] public string Email { get; set; } public string AddressLine1 { get; set; } public string City { get; set; } public string Telephone { get; set; } public string MobilePhone { get; set; } }
问题:
但是Swagger UI没有在GET
方法的复杂类型中渲染消息体参数字段。对于POST
和PUT
方法,Swagger UI按预期渲染消息体参数字段,但对于我GET
方法中的复杂类型却没有。
如屏幕截图所示,Swagger UI为我的复杂类型中的属性渲染查询参数字段,而不是像在POST
和PUT
方法中那样为我的类型渲染消息体参数字段。
当使用Postman进行测试并在请求的消息体中填充JSON时,我的GET
方法正常工作。通过在Visual Studio中的操作中设置断点,我可以看到值绑定到我的操作参数中的对象中。
我尝试在我的操作参数中使用[FromBody]
进行装饰(这是复杂类型的默认值),但结果相同。
这是Swagger的一个错误吗?还是我漏掉了什么?