使用swaggerize-hapi和node.js上传文件?

时间:2017-02-09 22:15:08

标签: node.js hapijs swagger-2.0

我正在使用POST动词创建一个API端点,它需要一个文件。我将我的端点声明如下:

    consumes:
  - application/json
  - multipart/form-data
   # format of the responses to the client (Accepts)
    produces:
    - application/json   
...
    /importfile:
        x-swagger-router-controller: import_file
        post:
          description: Sends the uploaded file to deliveries microservice to be processed.
          consumes:
            - multipart/form-data
          produces:
            - application/json
          operationId: importcsv
          parameters:
            - name: file
              in: formData
              description: file to upload
              required: true
              type: file

我在import_file.js

中有以下内容
const util = require('util');

function importcsv(req, res) {
    console.log(req);
    const message = util.format('hi there!');
    // this sends back a JSON response which is a single string
    return res.json(message);

}

module.exports = {
    importcsv,
};

几个问题:

  1. 永远不会打印路由器控制器中的日志。这让我觉得这个函数没有被调用。有什么问题?
  2. 即使成功回复,我也会看到:

    HTTP / 1.1

    content-type:text / html;字符集= utf-8的 cache-control:no-cache

    Multipart:未找到边界

  3. 为什么?

    我是Swagger的新手。提前谢谢。

1 个答案:

答案 0 :(得分:-1)

这篇文章here让我觉得边界问题是固定的。它已修复并于2016年12月29日合并到主分支,但最新版本的Swagger(see)于2016年12月27日完成。

因此,文件上传目前无法通过Swagger工作(v1.5.12)。这回答了我的两个问题。

我编写了以下单元测试来测试我的控制器是否有效:

.timeline-panel