6

私はswagger-nodeが初めてで、ブール型のデータを返すAPIメソッドを作成しています。メソッドの yaml は次のとおりです。

  /IsBooting: 
  get: 
    summary: "Returns if the device is booting"
    description: "Returns true when  is in booting state"
    x-swagger-router-controller: printer_status
    operationId: IsBooting
    responses: 
      200: 
        description: "Returns a bool that indicates if the deviceis booting"
        schema: 
          type: "boolean"
      default: 
        description: "Unexpected error"
        schema: 
          $ref: "#/definitions/Error"

この API メソッドが呼び出すコントローラーのメソッドは次のとおりです。

function IsBooting(req, res) {
   res.json(false)
}

PostMan を使用してこのメ​​ソッドを呼び出すと、一部の検証が次のメッセージで失敗します。

Error: Response validation failed: not a valid boolean: false
    at throwErrorWithCode (C:\...\node_modules\swagger-express-mw\node_modules\swagger-node-runner\node_modules\swagger-tools\lib\validators.js:121:13)
    at validateTypeAndFormat (C:\...\node_modules\swagger-express-mw\node_modules\swagger-node-runner\node_modules\swagger-tools\lib\validators.js:536:7)
    at Object.module.exports.validateSchemaConstraints (C:\...\node_modules\swagger-express-mw\node_modules\swagger-node-runner\node_modules\swagger-tools\lib\validators.js:627:7)
    at validateValue (C:\...\node_modules\swagger-express-mw\node_modules\swagger-node-runner\node_modules\swagger-tools\middleware\swagger-validator.js:117:16)
    at ServerResponse.res.end (C:\...\node_modules\swagger-express-mw\node_modules\swagger-node-runner\node_modules\swagger-tools\middleware\swagger-validator.js:242:9)
    at ServerResponse.send (C:\...\node_modules\express\lib\response.js:204:10)
    at ServerResponse.json (C:\...\node_modules\express\lib\response.js:249:15)
    at IsBooting (C:\...\api\controllers\printer_status.js:54:7)
    at swaggerRouter (C:\...\node_modules\swagger-express-mw\node_modules\swagger-node-runner\node_modules\swagger-tools\middleware\swagger-router.js:407:20)
    at swagger_router (C:\...\node_modules\swagger-express-mw\node_modules\swagger-node-runner\fittings\swagger_router.js:31:5)

データを含む応答を作成する方法がわかりません。文字列を型として使用する場合、またはブール値をカプセル化する新しい複合型を作成する場合は送信できますが、あまり良い解決策はないと思います...

何か考えはありますか?

4

3 に答える 3

3

同じ問題がありました。応答スキーマのタイプを文字列に変更しました。ある意味では、すべての http 応答は文字列になるため、解析してアプリケーションで使用する型に変換する必要があります。

これは私の闊歩仕様です。

responses:
'200':
  description: a string that represents a boolean value
  schema:
    type: string
于 2015-11-13T16:15:08.987 に答える