返回InputStream时生成swagger文档

时间:2016-03-04 12:52:40

标签: java spring-mvc swagger

我有一个方法,它将InputStream作为InputStreamResource返回,当我让swagger生成文档时,它表示返回类型是InputStreamResource。如何更改此设置,以便文档中的返回类型为InputStream?

  @ApiOperation()
  @RequestMapping(value = "/item/{id}", produces = "application/octet-stream", method = RequestMethod.GET)
  public ResponseEntity<InputStreamResource> getStream(
          @PathVariable(value = "id") String id,
          HttpServletResponse response
  ) {
    InputStream stream = null;
    try {
      stream = getData(id);
      return ResponseEntity.ok()
              .contentType(MediaType.APPLICATION_OCTET_STREAM)
              .body(new InputStreamResource(stream));
    } catch (Exception e) {
      IOUtils.closeQuietly(stream);
      response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
      return null;
    }
  }

2 个答案:

答案 0 :(得分:1)

试试这个:

@ApiOperation(response = InputStream.class)

根据文件:

  

响应:来自操作的默认响应类

答案 1 :(得分:1)

好吧,我不认为回归InputStream会为您的消费者增加很多价值。输入流内部是数据,这是他们最关心的内容。使用InputStream确实可以减轻servlet上下文中的服务负担,但是在一天结束时,消费者并不关心。

您可以为数据建模吗?它是一个字符串还是一个复杂的对象?也许一个字节数组?那最好描述一下。