2017-07-19 44 views
1

Swashbuckle不会生成带有“UserCreateResponse”输出的swagger.json,你如何解决这个问题?Swashbuckle - 返回响应的swagger文档?

[HttpPost] 
    public async Task<IActionResult> Update([FromBody]UserCreate Request) 
    { 
     UserCreateResponse response = new UserCreateResponse(); 

     //do something here 

     // returns UserCreateResponse with http status code 200 
     return Ok(response); 
    } 

你不能做到这一点,因为它不打算返回的HTTP状态代码,200400401等

[HttpPost] 
    public async Task<UserCreateResponse> Update([FromBody]UserCreate Request) 
    { 
     UserCreateResponse response = new UserCreateResponse(); 

     //do something here 

     // returns UserCreateResponse 
     return response; 
    } 

回答

2

您可以指定下列属性的响应类型:

[ProducesResponseType(typeof(UserCreateResponse), 200)] 
+0

谢谢hezye !!!! – 001

1

另一个变体是使用SwaggerResponse属性,该属性还允许提供附加说明:

[SwaggerResponse(HttpStatusCode.OK, "UserDTO", typeof(UserDTO))] 
public async Task<IHttpActionResult> Get([FromODataUri] int key) 
{ 
    var result = await UserRepo.GetAsync(key); 
    ... 
    return Ok(result); 
} 

如下所示产生输出:

enter image description here enter image description here

它也可以省略类型记录不返回一个实体的其他状态码:

[SwaggerResponse(HttpStatusCode.NotFound, "no data found")] 
[SwaggerResponse(HttpStatusCode.BadRequest, "requiered request headers not found")] 

enter image description here