我如何通过带有swagger-client的put方法发送请求正文参数

时间:2019-08-07 02:28:43

标签: node.js express swagger

我正在使用swagger-client。这是客户端的npm库模块。 但是我有问题 在服务器端,我正在使用快递。

即使我尝试使用put方法发送主体参数,express也不接受参数。 只能达到路径参数或查询参数。 那没问题。

这是代码和醒目的json。

■json中的请求路径。

"/test/{hogehoge}/sample": {
      "put": {
        "summary": "summary",
        "description": "description",
        "tags": [
          "Sample"
        ],
        "operationId": "operationId",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "description": "path description",
            "required": true,
            "type": "integer"
          },
          {
            "name": "body",
            "in": "body",
            "description": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/bodySchema"
            }
          }
        ],

■请求将路径放在上面的方法。

"bodySchema": {
      "type": "object",
      "properties": {
        "bodySchemaVersion": {
          "type": "string",
          "description": "bodySchema version"
        }
      }
    },

■快递日志

parameter:
 { query: {},
path:
{ param1: 'param1',
param2: 'param2' },
body: {} } } ← body that it should be bodySchema param.

■客户端Vue

import Swagger from 'swagger-client';
import swaggerJson from '@/assets/swagger/swagger.json';

....

// opts include 
// { bodySchema: { bodySchemaVersion: 'string text' } }


await this.swagger.client.apis[tagName][funcName](_opts);

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。

this.swagger = new Swagger({
  spec: json,
  usePromise: true,
  requestInterceptor(req) {
    req.headers['Content-Type'] = 'application/json'; // I've add this line.
    return req
  }
});