node-red / node-red-node-swagger

A set of tools for generating Swagger api documentation based on the HTTP nodes deployed in a flow
Apache License 2.0
62 stars 48 forks source link

Node-RED Swagger Documentation Generator

This package provides a set of tools for generating Swagger api documentation based on the HTTP nodes deployed in a flow.

Usage

  1. Install the node module

    npm install node-red-node-swagger

    Note: until this is published to npm, you will need to install from git:

    npm install node-red/node-red-node-swagger
  2. Provide a template swagger file in settings.js:

    swagger: {
      "template": {
        "swagger": "2.0",
        "info": {
          "title": "My Node-RED API",
          "version": "0.0.1"
        }
      }
    }
  3. This template will remain unchanged and serve as the basis for the swagger doc.

    Note: You may additionally add parameters to the swagger file in 'settings.js' to have those parameters automatically added to each path in the generated swagger doc.

    "swagger": {
      "template": {
        "swagger": "2.0",
        "info": {
          "title": "My Node-RED API",
          "version": "0.0.1"
        }
      },
      "parameters": [
        {
          "name": "parameterA",
          "type": "string",
          "in": "header",
          "required": false,
          "description": "This is a test parameter to show how parameters are automatically added to each path in the generated swagger doc."
        }
      ]
    }
  4. After installing the package, you have the option to identify metadata for each HTTP-In node that will be used in the swagger doc generation.

  5. The generated swagger is then available at http://localhost:1880/http-api/swagger.json.

Path Swagger Generation

Via the editor, you can define metadata for each particular HTTP-In node to be used in swagger generation.

To do so,

  1. Select an HTTP-In node in the editor.

  2. From the config panel, you can select a user-defined swagger doc from the dropdown. You may create a new metadata definition by selecting "Add new swagger-doc..." and clicking the edit button.

  3. This will launch the swagger config panel, where you have three distinct tabs that make up the swagger documentation.

Info

This tab allows you to provide the basic information about the attached paths.

Parameters

This tab allows you to configure the parameters that can be used with the particular operation.

If a body parameter is selected, the user will provide properties included in the body object, rather than specifying a type.

Responses

This tab allows you to define the applicable responses that a user may receive back from the operation.

If no responses are provided, a default response with the reply "success" will be used.

Swagger-UI

Swagger-UI is including in the plugin. Once loaded, the plugin will show a swagger tab in the node-red sidebar. From here, you can see the dynamically generated swagger for the current flow. Additionally, you can use the test function to try out your API directly from the editor, providing any parameters you have defined in the docs for the HTTP-In nodes. The Swagger-UI will automatically refresh any time the flow is redeployed.

Notes

Attribute definitions provided come from the Swagger 2.0 Spec