Friday, May 17, 2024
 Popular · Latest · Hot · Upcoming
163
rated 0 times [  165] [ 2]  / answers: 1 / hits: 6898  / 7 Years ago, sat, february 11, 2017, 12:00:00

I am building the API with Swagger and NodeJS, the annoying problem I have faced so far is Swagger validates the response, and it's not always smooth.



My case:



In file .yaml: I checked the yaml syntax with Swagger Editor => File Yaml is correct.



/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


To check the response format, I generated the NodeJs file from Swagger Editor



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


In controller file .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);
}


Try to run API with Postman, the error happens with log below:



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)


I cannot figure out what caused the error, I double checked the structure of JSON response.



Very appreciate for any suggestion.


More From » node.js

 Answers
3

After trying some experiments, I made it work. My solution simply is changing response code 201 to 200 in yaml file, and it worked. I don't know why I left the response code 201. Anyway, I am still new with this, and don't know if it's a best practice or not. I am open to receive any better suggestion.


[#22922] Friday, February 10, 2017, 7 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
karyme

Total Points: 545
Total Questions: 102
Total Answers: 120

Location: French Polynesia
Member since Tue, Jul 7, 2020
4 Years ago
;