2017-02-11 43 views
0

我建立與揚鞭和的NodeJS,我面臨到目前爲止揚鞭驗證響應惱人的問題API,它不是一帆風順。揚鞭的NodeJS - 響應驗證失敗

我的情況:

在文件.yaml:我查了一下YAML語法與揚鞭編輯=>文件YAML是正確的。

/user/createNew: 
x-swagger-router-controller: xxxxxxx 
post: 
    tags: 
    - User 
    summary: Create New User 
    # used as the method name of the controller 
    operationId: createNewUser 
    parameters: 
    - name: NewUserReq 
     in: body 
     required: true 
     description: Email register 
     schema: 
     $ref: "#/definitions/NewUserReq" 

    responses: 
    "201": 
     description: Successful 
     schema: 
     # a pointer to a definition 
     $ref: "#/definitions/CreateUserResp" 
    # responses may fall through to errors 
    default: 
     description: Error 
     schema: 
     $ref: "#/definitions/ErrorResponse" 


CreateUserResp: 
properties: 
    status: 
    type: integer 
    description: Response status 
    response: 
    $ref: "#/definitions/MsgResponse" 
MsgResponse: 
    required: 
    - resp_msg 
    properties: 
    resp_msg: 
    type: string 

要檢查響應格式,我所產生的從的NodeJS揚鞭編輯

examples['application/json'] = { 
    "response" : { 
     "resp_msg" : "aeiou" 
    }, 
    "status" : 123 
}; 

文件中控制器文件的.js:

function createNewUser(req,res){ 
.... 

var resp = new Object(); 
resp.resp_msg=data.email; 
final_response.status = 200; 
final_response.response = resp; 

console.log("createNewUser::Query succeffully", JSON.stringify(final_response)); 
//{"status":200,"response":{"resp_msg":"[email protected]"}} 

res.set('Content-Type', 'application/json'); 
res.json(final_response); 
} 

嘗試與郵差運行API,則錯誤

Error: Response validation failed: failed schema validation 
at throwErrorWithCode (/var/app/current/node_modules/swagger-express-mw/node_modules/swagger-node-runner/node_modules/swagger-tools/lib/validators.js:121:13) 
at Object.module.exports.validateAgainstSchema (/var/app/current/node_modules/swagger-express-mw/node_modules/swagger-node-runner/node_modules/swagger-tools/lib/validators.js:176:7) 
at /var/app/current/node_modules/swagger-express-mw/node_modules/swagger-node-runner/node_modules/swagger-tools/middleware/swagger-validator.js:141:22 
at /var/app/current/node_modules/swagger-express-mw/node_modules/swagger-node-runner/node_modules/swagger-tools/node_modules/async/lib/async.js:356:13 
at async.forEachOf.async.eachOf (/var/app/current/node_modules/swagger-express-mw/node_modules/swagger-node-runner/node_modules/swagger-tools/node_modules/async/lib/async.js:233:13) 
at _asyncMap (/var/app/current/node_modules/swagger-express-mw/node_modules/swagger-node-runner/node_modules/swagger-tools/node_modules/async/lib/async.js:355:9) 
at Object.map (/var/app/current/node_modules/swagger-express-mw/node_modules/swagger-node-runner/node_modules/swagger-tools/node_modules/async/lib/async.js:337:20) 
at validateValue (/var/app/current/node_modules/swagger-express-mw/node_modules/swagger-node-runner/node_modules/swagger-tools/middleware/swagger-validator.js:134:11) 
at ServerResponse.res.end (/var/app/current/node_modules/swagger-express-mw/node_modules/swagger-node-runner/node_modules/swagger-tools/middleware/swagger-validator.js:252:9) 
at ServerResponse.send (/var/app/current/node_modules/express/lib/response.js:205:10) 
:下面的日誌發生

我想不通是什麼導致了錯誤,我再次檢查了JSON響應的結構。

非常感激的任何建議。

回答

0

嘗試一些實驗後,我做了它的工作。我的解決方案只是將yaml文件中的響應代碼「201」更改爲「200」,並且它工作正常。我不知道我爲什麼留下響應代碼「201」。無論如何,我仍然對此感到陌生,不知道這是否是最佳做法。我很樂意接受任何更好的建議。

+0

非常感謝,這固定了我! – AliF50

0

我試圖重現,但它給了我一些錯誤。不過,我試圖消除MsgResponse和定義CreateUserResp作爲一個單一的定義,它的工作:

CreateUserResp: 
    type: object 
    properties: 
    response: 
     type: object 
     properties: 
     resp_msg: 
      type: string 
      description: The response object 
    status: 
     type: number 
     description: The status code 

好像你不定義response爲對象,只是增加了一些特性吧。

+0

感謝路易斯爲您的快​​速解答。不幸的是,我的答案仍然存在錯誤。 –

+0

你能解決這個問題嗎? –

+0

是的,請參考我的評論 –