0.15.0 • Published 11 months ago

swagger-snippet-generator v0.15.0

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

Swagger Snippet Generator

Generates code snippets in Swagger UI.

This package takes as input an HTTP Request. It translates the request into an HTTP Archive 1.2 request object. It uses the HTTP Snippet library to generate code snippets for every API endpoint (URL path + HTTP method) defined in the specification in various languages & tools (cURL, Node, Python, Ruby, Java, Go, C#...), or for selected endpoints.

This Repository is forked from ErikWittern/openapi-snippet

Features

  • Generate request snippets.
  • Fix style of RequestSnippet in SwaggerUI.

Example with SwaggerUI

With SwaggerUI module

import SwaggerUI from 'swagger-ui';
import SwaggerSnippetGenerator from 'swagger-snippet-generator';

// define Array of SnippetTarget
const snippetTargets = [
    {
        title: 'python (http.client)',
        target: 'python'
    },
    {
        target: 'python_requests'
    }
];

SwaggerUI({
  dom_id: '#swagger-ui',
  plugins: [
      SwaggerSnippetGenerator(snippetTargets)
  ],
  requestSnippetsEnabled: true
});

With SwaggerUI Bundle

Include the [swagger-snippet-generator.min.js](dist%2Fswagger-snippet-generator.min.js) file in your SwaggerUI HTML page:

Use SwaggerSnippetGenerator, which now defines the global variable SwaggerSnippetGenerator.

You can use SwaggerSnippetGenerator(snippetTargets) as a Plugin

<body>
<div id="swagger-ui"></div>

<script charset="UTF-8" src="/path/to/swagger-snippet-generator.min.js"></script>
<script charset="UTF-8" src="/path/to/swagger-ui-bundle.js"></script>
<script charset="UTF-8" src="/path/to/swagger-ui-standalone-preset.js"></script>
<script>
  <!-- swagger-initializer.js -->
  const snippetTargets = [
    {
      title: 'python (http.client)',
      syntax: 'python',
      target: 'python'
    },
    {
      target: 'python_requests'
    }
  ];

  window.onload = function() {
    window.ui = SwaggerUIBundle({
      url: 'https://petstore.swagger.io/v2/swagger.json',
      dom_id: '#swagger-ui',
      presets: [
        SwaggerUIBundle.presets.apis,
        SwaggerUIStandalonePreset
      ],
      plugins: [
        SwaggerUIBundle.plugins.DownloadUrl,
        SwaggerSnippetGenerator(snippetTargets)
      ],
      layout: 'StandaloneLayout',
      requestSnippetsEnabled: true
    });
  };
</script>
</body>

</html>

Parameter

SnippetTarget

Define target as SnippetTarget object

SnippetTarget = {
  target: 'Target language and library (see below)',
  title:  '(Optional) Button title. Generate from target if undefined',
  syntax: '(Optional) Syntax highlighting. Detect from target if undefined.'
};

Targets

Currently, Swagger Snippet Generator supports the following targets (depending on the HTTP Snippet library):

  • c_libcurl (default)
  • csharp_restsharp (default)
  • csharp_httpclient
  • go_native (default)
  • java_okhttp
  • java_unirest (default)
  • javascript_jquery
  • javascript_xhr (default)
  • node_native (default)
  • node_request
  • node_unirest
  • objc_nsurlsession (default)
  • ocaml_cohttp (default)
  • php_curl (default)
  • php_http1
  • php_http2
  • python_python3 (default)
  • python_requests
  • ruby_native (default)
  • shell_curl (default)
  • shell_httpie
  • shell_wget
  • swift_nsurlsession (default)

If only the language is provided (e.g., c), the default library will be selected.

License: MIT

Installation

npm i swagger-snippet-generator

Build Swagger Snippet Generator (for use in browser)

Clone this repository. Install required dependencies:

npm i

Build a minified version of Swagger Snippet Generator ([swagger-snippet-generator.min.js](dist%2Fswagger-snippet-generator.min.js)):

npm run build