Skip to content

v1.1.0

Choose a tag to compare

@kevinccbsg kevinccbsg released this 23 Dec 10:57
· 122 commits to master since this release
ce09c22

This PR includes a new way to format the comments based on swagger YAML spec to obtain swagger documentation, input, and output validation. Like in this README's example.

YAML

/**
 * @swagger
 * /test-valid-input:
 *   post:
 *     description: Test POST /test-valid-input
 *     tags: [Test]
 *     produces:
 *       - application/json
 *     parameters:
 *       - name: body
 *         description: Input payload
 *         required: true
 *         type: object
 *         schema:
 *         - $ref: '#/definitions/Input'
 *     responses:
 *       200:
 *         description: successful operation
 */
app.post('/test-valid-input', (req, res) => {
  const validInputModel = { name: 'Name is required' };

  try {
    const result = validator.validateAPIInput(validInputModel, req);
    res.status(200).json(result);
  } catch (error) {
    res.status(404).json({ error });
  }
});

/**
 * @swagger
 * /test-valid-output:
 *   get:
 *     description: Test GET /test-valid-output
 *     tags: [Test]
 *     produces:
 *       - application/json
 *     parameters:
 *       - name: body
 *         description: Input payload
 *         required: true
 *         type: object
 *         schema:
 *         - $ref: '#/definitions/Input'
 *     responses:
 *       200:
 *         description: successful operation
 *         schema:
 *           $ref: '#/definitions/Output'
 */
app.get('/test-valid-output', (req, res) => {
  const validInputModel = { name: 'Name is required' };
  const validOutputModel = { name: 'Name is required', result: 'Valid result' };

  try {
      validator.validateAPIInput(validInputModel, req);
    const result = validator.validateAPIOutput(validOutputModel, req);
    res.status(200).json(result);
  } catch (error) {
    res.status(404).json({ error });
  }
});