使用dotnet core返回Swagger文档的文件类型

时间:2017-09-26 13:57:29

标签: c# .net-core swagger asp.net-core-webapi

我使用Swagger for dotnet core来记录我的dotnet核心Web API。

我已阅读文档,告诉我需要添加 [ProducesResponseType(typeof(XXXXX),200)]高于控制器方法,以帮助swagger确定方法的响应类型。

我有一个控制器方法可以返回一个文件,而我正试图弄清楚如何告诉我要回复一个文件。

public class DocumentController : Controller
{
    private readonly IDocumentService _documentService;

    public DocumentController(IDocumentService documentService)
    {
        _documentService = documentService;
    }

    [HttpGet("{documentId}", Name= DocumentRoutes.Document)]
    [ProducesResponseType(typeof(XXXXX), 200)] // <== What goes here?
    public async Task<IActionResult> GetDocument(Guid documentId)
    {
        DocumentAdto documentAdto = await _documentService.GetAsync(documentId);
        return File(documentAdto.DocumentBytes, documentAdto.ContentType, documentAdto.Name);
    }
}

有没有人有任何想法?

我已经考虑过byte [],但只是说返回类型是&#34; byte&#34;。

1 个答案:

答案 0 :(得分:6)

您需要的是ProducesAttribute并指定内容类型作为参数(例如&#34; application / pdf&#34; PDF文件)。

编辑:看来Swagger可能无法选择ProducesAttribute。我的建议是将[{1}}设置为Type,并为该方法添加ProducesResponseType条评论。