2017-09-26 10 views
3

私はdotnetコアWeb APIを文書化するためにSwagger for dotnet coreを使用しています。dotnetコアを使用したSwaggerドキュメントのファイルのタイプを返します。

私はコントローラのメソッドの上に [ProducesResponseType(typeof(XXXXX),200)]を追加する必要があることを伝えるドキュメントを読んで、メソッドの応答タイプを掃除するのを手助けしました。

私はファイルを返すコントローラメソッドを持っています。私はファイルを返すように私にどのように伝えることができるかを考えています。

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 []に​​ついて考えましたが、戻り値の型は "byte"と書かれています。

答えて

4

必要なものはProducesAttributeで、コンテンツタイプをパラメータとして指定します(PDFファイルの場合は「application/pdf」など)。

編集:それはスウィガーがProducesAttributeでピックアップしないことがあります。私の提案は、ProducesResponseTypeのためにTypeの設定を解除し、/// <response code="200">Returns the requested file</response>のコメントをメソッドに追加することです。

+0

あなたはすべてのコンテンツタイプを指定できると思いますか? – chris31389

+0

私はこれを試してみましたが、swashbuckleのaspnetcoreバージョンでは動作していません。 – chris31389

+0

ファイルを返すのはレスポンスです.JsonやXMLのドキュメントスキーマを示す 'ProducesResponseType'ではなく、コンテンツタイプです。 Swaggerがアクションメソッドの 'ProducesAttribute'を受け取っていない場合は、単に' ProducesResponseType'の 'Type'を未設定にして、' を使用します。要求されたファイル 'comment – Moho

関連する問題